diff --git a/config/_default/menus/api.en.yaml b/config/_default/menus/api.en.yaml index 47653a92e63e9..5863d181dd135 100644 --- a/config/_default/menus/api.en.yaml +++ b/config/_default/menus/api.en.yaml @@ -2426,16 +2426,16 @@ menu: unstable: - v2 order: 43 - - name: Cancel a historical job - url: '#cancel-a-historical-job' - identifier: security-monitoring-cancel-a-historical-job + - name: Cancel a threat hunting job + url: '#cancel-a-threat-hunting-job' + identifier: security-monitoring-cancel-a-threat-hunting-job parent: security-monitoring generated: true params: versions: - v2 operationids: - - CancelHistoricalJob + - CancelThreatHuntingJob unstable: - v2 order: 22 @@ -2448,7 +2448,7 @@ menu: versions: - v2 operationids: - - GetHistoricalJob + - GetThreatHuntingJob unstable: - v2 order: 21 @@ -2461,7 +2461,7 @@ menu: versions: - v2 operationids: - - DeleteHistoricalJob + - DeleteThreatHuntingJob unstable: - v2 order: 23 @@ -2478,29 +2478,29 @@ menu: unstable: - v2 order: 24 - - name: Run a historical job - url: '#run-a-historical-job' - identifier: security-monitoring-run-a-historical-job + - name: Run a threat hunting job + url: '#run-a-threat-hunting-job' + identifier: security-monitoring-run-a-threat-hunting-job parent: security-monitoring generated: true params: versions: - v2 operationids: - - RunHistoricalJob + - RunThreatHuntingJob unstable: - v2 order: 19 - - name: List historical jobs - url: '#list-historical-jobs' - identifier: security-monitoring-list-historical-jobs + - name: List threat hunting jobs + url: '#list-threat-hunting-jobs' + identifier: security-monitoring-list-threat-hunting-jobs parent: security-monitoring generated: true params: versions: - v2 operationids: - - ListHistoricalJobs + - ListThreatHuntingJobs unstable: - v2 order: 20 diff --git a/content/en/api/v2/security-monitoring/examples.json b/content/en/api/v2/security-monitoring/examples.json index 846c2935d95da..e8a41404719f1 100644 --- a/content/en/api/v2/security-monitoring/examples.json +++ b/content/en/api/v2/security-monitoring/examples.json @@ -6463,7 +6463,7 @@ "html": "" } }, - "ListHistoricalJobs": { + "ListThreatHuntingJobs": { "responses": { "200": { "json": { @@ -6593,7 +6593,7 @@ "totalCount": "integer" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n

Array containing the list of historical jobs.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Historical job attributes.

\n
\n
\n
\n
\n
\n

createdAt

\n
\n

string

\n

Time when the job was created.

\n
\n \n
\n
\n
\n
\n
\n

createdByHandle

\n
\n

string

\n

The handle of the user who created the job.

\n
\n \n
\n
\n
\n
\n
\n

createdByName

\n
\n

string

\n

The name of the user who created the job.

\n
\n \n
\n
\n
\n
\n
\n

createdFromRuleId

\n
\n

string

\n

ID of the rule used to create the job (if it is created from a rule).

\n
\n \n
\n
\n
\n
\n
\n

jobDefinition

\n
\n

object

\n

Definition of a historical job.

\n
\n
\n
\n
\n
\n

calculatedFields

\n
\n

[object]

\n

Calculated fields.

\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Expression.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Field name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

cases [required]

\n
\n

[object]

\n

Cases used for generating job results.

\n
\n
\n
\n
\n
\n

actions

\n
\n

[object]

\n

Action to perform for each rule case.

\n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Options for the rule action

\n
\n
\n
\n
\n
\n

duration

\n
\n

int64

\n

Duration of the action in seconds. 0 indicates no expiration.

\n
\n \n
\n
\n
\n
\n
\n

flaggedIPType

\n
\n

enum

\n

Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses. \nAllowed enum values: SUSPICIOUS,FLAGGED

\n
\n \n
\n
\n
\n
\n
\n

userBehaviorName

\n
\n

string

\n

Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The action type. \nAllowed enum values: block_ip,block_user,user_behavior,flag_ip

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

A case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

from [required]

\n
\n

int64

\n

Starting time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

groupSignalsBy

\n
\n

[string]

\n

Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.

\n
\n \n
\n
\n
\n
\n
\n

index [required]

\n
\n

string

\n

Index used to load the data.

\n
\n \n
\n
\n
\n
\n
\n

message [required]

\n
\n

string

\n

Message for generated results.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Job options.

\n
\n
\n
\n
\n
\n

detectionMethod

\n
\n

enum

\n

The detection method. \nAllowed enum values: threshold,new_value,anomaly_detection,impossible_travel,hardcoded,third_party,anomaly_threshold,sequence_detection

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

impossibleTravelOptions

\n
\n

object

\n

Options on impossible travel detection method.

\n
\n
\n
\n
\n
\n

baselineUserLocations

\n
\n

boolean

\n

If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

keepAlive

\n
\n

enum

\n

Once a signal is generated, the signal will remain "open" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

maxSignalDuration

\n
\n

enum

\n

A signal will "close" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

newValueOptions

\n
\n

object

\n

Options on new value detection method.

\n
\n
\n
\n
\n
\n

forgetAfter

\n
\n

enum

\n

The duration in days after which a learned value is forgotten. \nAllowed enum values: 1,2,7,14,21,28

\n
\n \n
\n
\n
\n
\n
\n

learningDuration

\n
\n

enum

\n

The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. \nAllowed enum values: 0,1,7

\n
\n \n
\n
\n
\n
\n
\n

learningMethod

\n
\n

enum

\n

The learning method used to determine when signals should be generated for values that weren't learned. \nAllowed enum values: duration,threshold

default: duration

\n
\n \n
\n
\n
\n
\n
\n

learningThreshold

\n
\n

enum

\n

A number of occurrences after which signals will be generated for values that weren't learned. \nAllowed enum values: 0,1

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

sequenceDetectionOptions

\n
\n

object

\n

Options on sequence detection method.

\n
\n
\n
\n
\n
\n

stepTransitions

\n
\n

[object]

\n

Transitions defining the allowed order of steps and their evaluation windows.

\n
\n
\n
\n
\n
\n

child

\n
\n

string

\n

Name of the child step.

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

parent

\n
\n

string

\n

Name of the parent step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

steps

\n
\n

[object]

\n

Steps that define the conditions to be matched in sequence.

\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

Condition referencing rule queries (e.g., a > 0).

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Unique name identifying the step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

thirdPartyRuleOptions

\n
\n

object

\n

Options on third party detection method.

\n
\n
\n
\n
\n
\n

defaultNotifications

\n
\n

[string]

\n

Notification targets for the logs that do not correspond to any of the cases.

\n
\n \n
\n
\n
\n
\n
\n

defaultStatus

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n

rootQueries

\n
\n

[object]

\n

Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.

\n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

signalTitleTemplate

\n
\n

string

\n

A template for the signal title; if omitted, the title is generated based on the case name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

queries [required]

\n
\n

[object]

\n

Queries for selecting logs analyzed by the job.

\n
\n
\n
\n
\n
\n

aggregation

\n
\n

enum

\n

The aggregation type. \nAllowed enum values: count,cardinality,sum,max,new_value,geo_data,event_count,none

\n
\n \n
\n
\n
\n
\n
\n

dataSource

\n
\n

enum

\n

Source of events, either logs, audit trail, or Datadog events. \nAllowed enum values: logs,audit,app_sec_spans,spans,security_runtime,network,events

default: logs

\n
\n \n
\n
\n
\n
\n
\n

distinctFields

\n
\n

[string]

\n

Field for which the cardinality is measured. Sent as an array.

\n
\n \n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

hasOptionalGroupByFields

\n
\n

boolean

\n

When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with N/A, replacing the missing values.

\n
\n \n
\n
\n
\n
\n
\n

metrics

\n
\n

[string]

\n

Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the query.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

referenceTables

\n
\n

[object]

\n

Reference tables used in the queries.

\n
\n
\n
\n
\n
\n

checkPresence

\n
\n

boolean

\n

Whether to include or exclude the matched values.

\n
\n \n
\n
\n
\n
\n
\n

columnName

\n
\n

string

\n

The name of the column in the reference table.

\n
\n \n
\n
\n
\n
\n
\n

logFieldPath

\n
\n

string

\n

The field in the log to match against the reference table.

\n
\n \n
\n
\n
\n
\n
\n

ruleQueryName

\n
\n

string

\n

The name of the query to apply the reference table to.

\n
\n \n
\n
\n
\n
\n
\n

tableName

\n
\n

string

\n

The name of the reference table.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

Tags for generated signals.

\n
\n \n
\n
\n
\n
\n
\n

thirdPartyCases

\n
\n

[object]

\n

Cases for generating results from third-party detection method. Only available for third-party detection method.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets for each case.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

A query to map a third party event to this case.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

to [required]

\n
\n

int64

\n

Ending time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Job type.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

jobName

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

jobStatus

\n
\n

string

\n

Job status.

\n
\n \n
\n
\n
\n
\n
\n

modifiedAt

\n
\n

string

\n

Last modification time of the job.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

Type of payload. \nAllowed enum values: historicalDetectionsJob

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata about the list of jobs.

\n
\n
\n
\n
\n
\n

totalCount

\n
\n

int32

\n

Number of jobs in the list.

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n

Array containing the list of threat hunting jobs.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Threat hunting job attributes.

\n
\n
\n
\n
\n
\n

createdAt

\n
\n

string

\n

Time when the job was created.

\n
\n \n
\n
\n
\n
\n
\n

createdByHandle

\n
\n

string

\n

The handle of the user who created the job.

\n
\n \n
\n
\n
\n
\n
\n

createdByName

\n
\n

string

\n

The name of the user who created the job.

\n
\n \n
\n
\n
\n
\n
\n

createdFromRuleId

\n
\n

string

\n

ID of the rule used to create the job (if it is created from a rule).

\n
\n \n
\n
\n
\n
\n
\n

jobDefinition

\n
\n

object

\n

Definition of a threat hunting job.

\n
\n
\n
\n
\n
\n

calculatedFields

\n
\n

[object]

\n

Calculated fields.

\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Expression.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Field name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

cases [required]

\n
\n

[object]

\n

Cases used for generating job results.

\n
\n
\n
\n
\n
\n

actions

\n
\n

[object]

\n

Action to perform for each rule case.

\n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Options for the rule action

\n
\n
\n
\n
\n
\n

duration

\n
\n

int64

\n

Duration of the action in seconds. 0 indicates no expiration.

\n
\n \n
\n
\n
\n
\n
\n

flaggedIPType

\n
\n

enum

\n

Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses. \nAllowed enum values: SUSPICIOUS,FLAGGED

\n
\n \n
\n
\n
\n
\n
\n

userBehaviorName

\n
\n

string

\n

Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The action type. \nAllowed enum values: block_ip,block_user,user_behavior,flag_ip

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

A case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

from [required]

\n
\n

int64

\n

Starting time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

groupSignalsBy

\n
\n

[string]

\n

Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.

\n
\n \n
\n
\n
\n
\n
\n

index [required]

\n
\n

string

\n

Index used to load the data.

\n
\n \n
\n
\n
\n
\n
\n

message [required]

\n
\n

string

\n

Message for generated results.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Job options.

\n
\n
\n
\n
\n
\n

detectionMethod

\n
\n

enum

\n

The detection method. \nAllowed enum values: threshold,new_value,anomaly_detection,impossible_travel,hardcoded,third_party,anomaly_threshold,sequence_detection

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

impossibleTravelOptions

\n
\n

object

\n

Options on impossible travel detection method.

\n
\n
\n
\n
\n
\n

baselineUserLocations

\n
\n

boolean

\n

If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

keepAlive

\n
\n

enum

\n

Once a signal is generated, the signal will remain "open" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

maxSignalDuration

\n
\n

enum

\n

A signal will "close" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

newValueOptions

\n
\n

object

\n

Options on new value detection method.

\n
\n
\n
\n
\n
\n

forgetAfter

\n
\n

enum

\n

The duration in days after which a learned value is forgotten. \nAllowed enum values: 1,2,7,14,21,28

\n
\n \n
\n
\n
\n
\n
\n

learningDuration

\n
\n

enum

\n

The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. \nAllowed enum values: 0,1,7

\n
\n \n
\n
\n
\n
\n
\n

learningMethod

\n
\n

enum

\n

The learning method used to determine when signals should be generated for values that weren't learned. \nAllowed enum values: duration,threshold

default: duration

\n
\n \n
\n
\n
\n
\n
\n

learningThreshold

\n
\n

enum

\n

A number of occurrences after which signals will be generated for values that weren't learned. \nAllowed enum values: 0,1

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

sequenceDetectionOptions

\n
\n

object

\n

Options on sequence detection method.

\n
\n
\n
\n
\n
\n

stepTransitions

\n
\n

[object]

\n

Transitions defining the allowed order of steps and their evaluation windows.

\n
\n
\n
\n
\n
\n

child

\n
\n

string

\n

Name of the child step.

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

parent

\n
\n

string

\n

Name of the parent step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

steps

\n
\n

[object]

\n

Steps that define the conditions to be matched in sequence.

\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

Condition referencing rule queries (e.g., a > 0).

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Unique name identifying the step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

thirdPartyRuleOptions

\n
\n

object

\n

Options on third party detection method.

\n
\n
\n
\n
\n
\n

defaultNotifications

\n
\n

[string]

\n

Notification targets for the logs that do not correspond to any of the cases.

\n
\n \n
\n
\n
\n
\n
\n

defaultStatus

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n

rootQueries

\n
\n

[object]

\n

Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.

\n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

signalTitleTemplate

\n
\n

string

\n

A template for the signal title; if omitted, the title is generated based on the case name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

queries [required]

\n
\n

[object]

\n

Queries for selecting logs analyzed by the job.

\n
\n
\n
\n
\n
\n

aggregation

\n
\n

enum

\n

The aggregation type. \nAllowed enum values: count,cardinality,sum,max,new_value,geo_data,event_count,none

\n
\n \n
\n
\n
\n
\n
\n

dataSource

\n
\n

enum

\n

Source of events, either logs, audit trail, or Datadog events. \nAllowed enum values: logs,audit,app_sec_spans,spans,security_runtime,network,events

default: logs

\n
\n \n
\n
\n
\n
\n
\n

distinctFields

\n
\n

[string]

\n

Field for which the cardinality is measured. Sent as an array.

\n
\n \n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

hasOptionalGroupByFields

\n
\n

boolean

\n

When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with N/A, replacing the missing values.

\n
\n \n
\n
\n
\n
\n
\n

metrics

\n
\n

[string]

\n

Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the query.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

referenceTables

\n
\n

[object]

\n

Reference tables used in the queries.

\n
\n
\n
\n
\n
\n

checkPresence

\n
\n

boolean

\n

Whether to include or exclude the matched values.

\n
\n \n
\n
\n
\n
\n
\n

columnName

\n
\n

string

\n

The name of the column in the reference table.

\n
\n \n
\n
\n
\n
\n
\n

logFieldPath

\n
\n

string

\n

The field in the log to match against the reference table.

\n
\n \n
\n
\n
\n
\n
\n

ruleQueryName

\n
\n

string

\n

The name of the query to apply the reference table to.

\n
\n \n
\n
\n
\n
\n
\n

tableName

\n
\n

string

\n

The name of the reference table.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

Tags for generated signals.

\n
\n \n
\n
\n
\n
\n
\n

thirdPartyCases

\n
\n

[object]

\n

Cases for generating results from third-party detection method. Only available for third-party detection method.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets for each case.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

A query to map a third party event to this case.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

to [required]

\n
\n

int64

\n

Ending time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Job type.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

jobName

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

jobStatus

\n
\n

string

\n

Job status.

\n
\n \n
\n
\n
\n
\n
\n

modifiedAt

\n
\n

string

\n

Last modification time of the job.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

Type of payload. \nAllowed enum values: historicalDetectionsJob

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata about the list of jobs.

\n
\n
\n
\n
\n
\n

totalCount

\n
\n

int32

\n

Number of jobs in the list.

\n
\n \n
\n
\n
\n
" }, "400": { "json": { @@ -6626,7 +6626,7 @@ "html": "" } }, - "RunHistoricalJob": { + "RunThreatHuntingJob": { "responses": { "201": { "json": { @@ -6841,7 +6841,7 @@ "type": "string" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for running a historical job request.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Run a historical job request.

\n
\n
\n
\n
\n
\n

fromRule

\n
\n

object

\n

Definition of a historical job based on a security monitoring rule.

\n
\n
\n
\n
\n
\n

from [required]

\n
\n

int64

\n

Starting time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

ID of the detection rule used to create the job.

\n
\n \n
\n
\n
\n
\n
\n

index [required]

\n
\n

string

\n

Index used to load the data.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notifications sent when the job is completed.

\n
\n \n
\n
\n
\n
\n
\n

to [required]

\n
\n

int64

\n

Ending time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

Request ID.

\n
\n \n
\n
\n
\n
\n
\n

jobDefinition

\n
\n

object

\n

Definition of a historical job.

\n
\n
\n
\n
\n
\n

calculatedFields

\n
\n

[object]

\n

Calculated fields.

\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Expression.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Field name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

cases [required]

\n
\n

[object]

\n

Cases used for generating job results.

\n
\n
\n
\n
\n
\n

actions

\n
\n

[object]

\n

Action to perform for each rule case.

\n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Options for the rule action

\n
\n
\n
\n
\n
\n

duration

\n
\n

int64

\n

Duration of the action in seconds. 0 indicates no expiration.

\n
\n \n
\n
\n
\n
\n
\n

flaggedIPType

\n
\n

enum

\n

Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses. \nAllowed enum values: SUSPICIOUS,FLAGGED

\n
\n \n
\n
\n
\n
\n
\n

userBehaviorName

\n
\n

string

\n

Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The action type. \nAllowed enum values: block_ip,block_user,user_behavior,flag_ip

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

A case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

from [required]

\n
\n

int64

\n

Starting time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

groupSignalsBy

\n
\n

[string]

\n

Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.

\n
\n \n
\n
\n
\n
\n
\n

index [required]

\n
\n

string

\n

Index used to load the data.

\n
\n \n
\n
\n
\n
\n
\n

message [required]

\n
\n

string

\n

Message for generated results.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Job options.

\n
\n
\n
\n
\n
\n

detectionMethod

\n
\n

enum

\n

The detection method. \nAllowed enum values: threshold,new_value,anomaly_detection,impossible_travel,hardcoded,third_party,anomaly_threshold,sequence_detection

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

impossibleTravelOptions

\n
\n

object

\n

Options on impossible travel detection method.

\n
\n
\n
\n
\n
\n

baselineUserLocations

\n
\n

boolean

\n

If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

keepAlive

\n
\n

enum

\n

Once a signal is generated, the signal will remain "open" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

maxSignalDuration

\n
\n

enum

\n

A signal will "close" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

newValueOptions

\n
\n

object

\n

Options on new value detection method.

\n
\n
\n
\n
\n
\n

forgetAfter

\n
\n

enum

\n

The duration in days after which a learned value is forgotten. \nAllowed enum values: 1,2,7,14,21,28

\n
\n \n
\n
\n
\n
\n
\n

learningDuration

\n
\n

enum

\n

The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. \nAllowed enum values: 0,1,7

\n
\n \n
\n
\n
\n
\n
\n

learningMethod

\n
\n

enum

\n

The learning method used to determine when signals should be generated for values that weren't learned. \nAllowed enum values: duration,threshold

default: duration

\n
\n \n
\n
\n
\n
\n
\n

learningThreshold

\n
\n

enum

\n

A number of occurrences after which signals will be generated for values that weren't learned. \nAllowed enum values: 0,1

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

sequenceDetectionOptions

\n
\n

object

\n

Options on sequence detection method.

\n
\n
\n
\n
\n
\n

stepTransitions

\n
\n

[object]

\n

Transitions defining the allowed order of steps and their evaluation windows.

\n
\n
\n
\n
\n
\n

child

\n
\n

string

\n

Name of the child step.

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

parent

\n
\n

string

\n

Name of the parent step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

steps

\n
\n

[object]

\n

Steps that define the conditions to be matched in sequence.

\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

Condition referencing rule queries (e.g., a > 0).

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Unique name identifying the step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

thirdPartyRuleOptions

\n
\n

object

\n

Options on third party detection method.

\n
\n
\n
\n
\n
\n

defaultNotifications

\n
\n

[string]

\n

Notification targets for the logs that do not correspond to any of the cases.

\n
\n \n
\n
\n
\n
\n
\n

defaultStatus

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n

rootQueries

\n
\n

[object]

\n

Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.

\n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

signalTitleTemplate

\n
\n

string

\n

A template for the signal title; if omitted, the title is generated based on the case name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

queries [required]

\n
\n

[object]

\n

Queries for selecting logs analyzed by the job.

\n
\n
\n
\n
\n
\n

aggregation

\n
\n

enum

\n

The aggregation type. \nAllowed enum values: count,cardinality,sum,max,new_value,geo_data,event_count,none

\n
\n \n
\n
\n
\n
\n
\n

dataSource

\n
\n

enum

\n

Source of events, either logs, audit trail, or Datadog events. \nAllowed enum values: logs,audit,app_sec_spans,spans,security_runtime,network,events

default: logs

\n
\n \n
\n
\n
\n
\n
\n

distinctFields

\n
\n

[string]

\n

Field for which the cardinality is measured. Sent as an array.

\n
\n \n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

hasOptionalGroupByFields

\n
\n

boolean

\n

When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with N/A, replacing the missing values.

\n
\n \n
\n
\n
\n
\n
\n

metrics

\n
\n

[string]

\n

Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the query.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

referenceTables

\n
\n

[object]

\n

Reference tables used in the queries.

\n
\n
\n
\n
\n
\n

checkPresence

\n
\n

boolean

\n

Whether to include or exclude the matched values.

\n
\n \n
\n
\n
\n
\n
\n

columnName

\n
\n

string

\n

The name of the column in the reference table.

\n
\n \n
\n
\n
\n
\n
\n

logFieldPath

\n
\n

string

\n

The field in the log to match against the reference table.

\n
\n \n
\n
\n
\n
\n
\n

ruleQueryName

\n
\n

string

\n

The name of the query to apply the reference table to.

\n
\n \n
\n
\n
\n
\n
\n

tableName

\n
\n

string

\n

The name of the reference table.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

Tags for generated signals.

\n
\n \n
\n
\n
\n
\n
\n

thirdPartyCases

\n
\n

[object]

\n

Cases for generating results from third-party detection method. Only available for third-party detection method.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets for each case.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

A query to map a third party event to this case.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

to [required]

\n
\n

int64

\n

Ending time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Job type.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

Type of data. \nAllowed enum values: historicalDetectionsJobCreate

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for running a threat hunting job request.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Run a threat hunting job request.

\n
\n
\n
\n
\n
\n

fromRule

\n
\n

object

\n

Definition of a threat hunting job based on a security monitoring rule.

\n
\n
\n
\n
\n
\n

from [required]

\n
\n

int64

\n

Starting time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

ID of the detection rule used to create the job.

\n
\n \n
\n
\n
\n
\n
\n

index [required]

\n
\n

string

\n

Index used to load the data.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notifications sent when the job is completed.

\n
\n \n
\n
\n
\n
\n
\n

to [required]

\n
\n

int64

\n

Ending time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

Request ID.

\n
\n \n
\n
\n
\n
\n
\n

jobDefinition

\n
\n

object

\n

Definition of a threat hunting job.

\n
\n
\n
\n
\n
\n

calculatedFields

\n
\n

[object]

\n

Calculated fields.

\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Expression.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Field name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

cases [required]

\n
\n

[object]

\n

Cases used for generating job results.

\n
\n
\n
\n
\n
\n

actions

\n
\n

[object]

\n

Action to perform for each rule case.

\n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Options for the rule action

\n
\n
\n
\n
\n
\n

duration

\n
\n

int64

\n

Duration of the action in seconds. 0 indicates no expiration.

\n
\n \n
\n
\n
\n
\n
\n

flaggedIPType

\n
\n

enum

\n

Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses. \nAllowed enum values: SUSPICIOUS,FLAGGED

\n
\n \n
\n
\n
\n
\n
\n

userBehaviorName

\n
\n

string

\n

Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The action type. \nAllowed enum values: block_ip,block_user,user_behavior,flag_ip

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

A case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

from [required]

\n
\n

int64

\n

Starting time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

groupSignalsBy

\n
\n

[string]

\n

Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.

\n
\n \n
\n
\n
\n
\n
\n

index [required]

\n
\n

string

\n

Index used to load the data.

\n
\n \n
\n
\n
\n
\n
\n

message [required]

\n
\n

string

\n

Message for generated results.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Job options.

\n
\n
\n
\n
\n
\n

detectionMethod

\n
\n

enum

\n

The detection method. \nAllowed enum values: threshold,new_value,anomaly_detection,impossible_travel,hardcoded,third_party,anomaly_threshold,sequence_detection

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

impossibleTravelOptions

\n
\n

object

\n

Options on impossible travel detection method.

\n
\n
\n
\n
\n
\n

baselineUserLocations

\n
\n

boolean

\n

If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

keepAlive

\n
\n

enum

\n

Once a signal is generated, the signal will remain "open" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

maxSignalDuration

\n
\n

enum

\n

A signal will "close" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

newValueOptions

\n
\n

object

\n

Options on new value detection method.

\n
\n
\n
\n
\n
\n

forgetAfter

\n
\n

enum

\n

The duration in days after which a learned value is forgotten. \nAllowed enum values: 1,2,7,14,21,28

\n
\n \n
\n
\n
\n
\n
\n

learningDuration

\n
\n

enum

\n

The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. \nAllowed enum values: 0,1,7

\n
\n \n
\n
\n
\n
\n
\n

learningMethod

\n
\n

enum

\n

The learning method used to determine when signals should be generated for values that weren't learned. \nAllowed enum values: duration,threshold

default: duration

\n
\n \n
\n
\n
\n
\n
\n

learningThreshold

\n
\n

enum

\n

A number of occurrences after which signals will be generated for values that weren't learned. \nAllowed enum values: 0,1

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

sequenceDetectionOptions

\n
\n

object

\n

Options on sequence detection method.

\n
\n
\n
\n
\n
\n

stepTransitions

\n
\n

[object]

\n

Transitions defining the allowed order of steps and their evaluation windows.

\n
\n
\n
\n
\n
\n

child

\n
\n

string

\n

Name of the child step.

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

parent

\n
\n

string

\n

Name of the parent step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

steps

\n
\n

[object]

\n

Steps that define the conditions to be matched in sequence.

\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

Condition referencing rule queries (e.g., a > 0).

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Unique name identifying the step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

thirdPartyRuleOptions

\n
\n

object

\n

Options on third party detection method.

\n
\n
\n
\n
\n
\n

defaultNotifications

\n
\n

[string]

\n

Notification targets for the logs that do not correspond to any of the cases.

\n
\n \n
\n
\n
\n
\n
\n

defaultStatus

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n

rootQueries

\n
\n

[object]

\n

Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.

\n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

signalTitleTemplate

\n
\n

string

\n

A template for the signal title; if omitted, the title is generated based on the case name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

queries [required]

\n
\n

[object]

\n

Queries for selecting logs analyzed by the job.

\n
\n
\n
\n
\n
\n

aggregation

\n
\n

enum

\n

The aggregation type. \nAllowed enum values: count,cardinality,sum,max,new_value,geo_data,event_count,none

\n
\n \n
\n
\n
\n
\n
\n

dataSource

\n
\n

enum

\n

Source of events, either logs, audit trail, or Datadog events. \nAllowed enum values: logs,audit,app_sec_spans,spans,security_runtime,network,events

default: logs

\n
\n \n
\n
\n
\n
\n
\n

distinctFields

\n
\n

[string]

\n

Field for which the cardinality is measured. Sent as an array.

\n
\n \n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

hasOptionalGroupByFields

\n
\n

boolean

\n

When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with N/A, replacing the missing values.

\n
\n \n
\n
\n
\n
\n
\n

metrics

\n
\n

[string]

\n

Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the query.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

referenceTables

\n
\n

[object]

\n

Reference tables used in the queries.

\n
\n
\n
\n
\n
\n

checkPresence

\n
\n

boolean

\n

Whether to include or exclude the matched values.

\n
\n \n
\n
\n
\n
\n
\n

columnName

\n
\n

string

\n

The name of the column in the reference table.

\n
\n \n
\n
\n
\n
\n
\n

logFieldPath

\n
\n

string

\n

The field in the log to match against the reference table.

\n
\n \n
\n
\n
\n
\n
\n

ruleQueryName

\n
\n

string

\n

The name of the query to apply the reference table to.

\n
\n \n
\n
\n
\n
\n
\n

tableName

\n
\n

string

\n

The name of the reference table.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

Tags for generated signals.

\n
\n \n
\n
\n
\n
\n
\n

thirdPartyCases

\n
\n

[object]

\n

Cases for generating results from third-party detection method. Only available for third-party detection method.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets for each case.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

A query to map a third party event to this case.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

to [required]

\n
\n

int64

\n

Ending time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Job type.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

Type of data. \nAllowed enum values: historicalDetectionsJobCreate

\n
\n \n
\n
\n
\n
" } }, "ConvertJobResultToSignal": { @@ -6918,10 +6918,10 @@ "type": "string" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for converting historical job results to signals.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes for converting historical job results to signals.

\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

Request ID.

\n
\n \n
\n
\n
\n
\n
\n

jobResultIds [required]

\n
\n

[string]

\n

Job result IDs.

\n
\n \n
\n
\n
\n
\n
\n

notifications [required]

\n
\n

[string]

\n

Notifications sent.

\n
\n \n
\n
\n
\n
\n
\n

signalMessage [required]

\n
\n

string

\n

Message of generated signals.

\n
\n \n
\n
\n
\n
\n
\n

signalSeverity [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

Type of payload. \nAllowed enum values: historicalDetectionsJobResultSignalConversion

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for converting threat hunting job results to signals.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes for converting threat hunting job results to signals.

\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

Request ID.

\n
\n \n
\n
\n
\n
\n
\n

jobResultIds [required]

\n
\n

[string]

\n

Job result IDs.

\n
\n \n
\n
\n
\n
\n
\n

notifications [required]

\n
\n

[string]

\n

Notifications sent.

\n
\n \n
\n
\n
\n
\n
\n

signalMessage [required]

\n
\n

string

\n

Message of generated signals.

\n
\n \n
\n
\n
\n
\n
\n

signalSeverity [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

Type of payload. \nAllowed enum values: historicalDetectionsJobResultSignalConversion

\n
\n \n
\n
\n
\n
" } }, - "DeleteHistoricalJob": { + "DeleteThreatHuntingJob": { "responses": { "400": { "json": { @@ -6978,7 +6978,7 @@ "html": "" } }, - "GetHistoricalJob": { + "GetThreatHuntingJob": { "responses": { "200": { "json": { @@ -7103,7 +7103,7 @@ "type": "string" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Historical job response data.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Historical job attributes.

\n
\n
\n
\n
\n
\n

createdAt

\n
\n

string

\n

Time when the job was created.

\n
\n \n
\n
\n
\n
\n
\n

createdByHandle

\n
\n

string

\n

The handle of the user who created the job.

\n
\n \n
\n
\n
\n
\n
\n

createdByName

\n
\n

string

\n

The name of the user who created the job.

\n
\n \n
\n
\n
\n
\n
\n

createdFromRuleId

\n
\n

string

\n

ID of the rule used to create the job (if it is created from a rule).

\n
\n \n
\n
\n
\n
\n
\n

jobDefinition

\n
\n

object

\n

Definition of a historical job.

\n
\n
\n
\n
\n
\n

calculatedFields

\n
\n

[object]

\n

Calculated fields.

\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Expression.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Field name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

cases [required]

\n
\n

[object]

\n

Cases used for generating job results.

\n
\n
\n
\n
\n
\n

actions

\n
\n

[object]

\n

Action to perform for each rule case.

\n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Options for the rule action

\n
\n
\n
\n
\n
\n

duration

\n
\n

int64

\n

Duration of the action in seconds. 0 indicates no expiration.

\n
\n \n
\n
\n
\n
\n
\n

flaggedIPType

\n
\n

enum

\n

Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses. \nAllowed enum values: SUSPICIOUS,FLAGGED

\n
\n \n
\n
\n
\n
\n
\n

userBehaviorName

\n
\n

string

\n

Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The action type. \nAllowed enum values: block_ip,block_user,user_behavior,flag_ip

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

A case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

from [required]

\n
\n

int64

\n

Starting time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

groupSignalsBy

\n
\n

[string]

\n

Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.

\n
\n \n
\n
\n
\n
\n
\n

index [required]

\n
\n

string

\n

Index used to load the data.

\n
\n \n
\n
\n
\n
\n
\n

message [required]

\n
\n

string

\n

Message for generated results.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Job options.

\n
\n
\n
\n
\n
\n

detectionMethod

\n
\n

enum

\n

The detection method. \nAllowed enum values: threshold,new_value,anomaly_detection,impossible_travel,hardcoded,third_party,anomaly_threshold,sequence_detection

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

impossibleTravelOptions

\n
\n

object

\n

Options on impossible travel detection method.

\n
\n
\n
\n
\n
\n

baselineUserLocations

\n
\n

boolean

\n

If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

keepAlive

\n
\n

enum

\n

Once a signal is generated, the signal will remain "open" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

maxSignalDuration

\n
\n

enum

\n

A signal will "close" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

newValueOptions

\n
\n

object

\n

Options on new value detection method.

\n
\n
\n
\n
\n
\n

forgetAfter

\n
\n

enum

\n

The duration in days after which a learned value is forgotten. \nAllowed enum values: 1,2,7,14,21,28

\n
\n \n
\n
\n
\n
\n
\n

learningDuration

\n
\n

enum

\n

The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. \nAllowed enum values: 0,1,7

\n
\n \n
\n
\n
\n
\n
\n

learningMethod

\n
\n

enum

\n

The learning method used to determine when signals should be generated for values that weren't learned. \nAllowed enum values: duration,threshold

default: duration

\n
\n \n
\n
\n
\n
\n
\n

learningThreshold

\n
\n

enum

\n

A number of occurrences after which signals will be generated for values that weren't learned. \nAllowed enum values: 0,1

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

sequenceDetectionOptions

\n
\n

object

\n

Options on sequence detection method.

\n
\n
\n
\n
\n
\n

stepTransitions

\n
\n

[object]

\n

Transitions defining the allowed order of steps and their evaluation windows.

\n
\n
\n
\n
\n
\n

child

\n
\n

string

\n

Name of the child step.

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

parent

\n
\n

string

\n

Name of the parent step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

steps

\n
\n

[object]

\n

Steps that define the conditions to be matched in sequence.

\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

Condition referencing rule queries (e.g., a > 0).

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Unique name identifying the step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

thirdPartyRuleOptions

\n
\n

object

\n

Options on third party detection method.

\n
\n
\n
\n
\n
\n

defaultNotifications

\n
\n

[string]

\n

Notification targets for the logs that do not correspond to any of the cases.

\n
\n \n
\n
\n
\n
\n
\n

defaultStatus

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n

rootQueries

\n
\n

[object]

\n

Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.

\n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

signalTitleTemplate

\n
\n

string

\n

A template for the signal title; if omitted, the title is generated based on the case name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

queries [required]

\n
\n

[object]

\n

Queries for selecting logs analyzed by the job.

\n
\n
\n
\n
\n
\n

aggregation

\n
\n

enum

\n

The aggregation type. \nAllowed enum values: count,cardinality,sum,max,new_value,geo_data,event_count,none

\n
\n \n
\n
\n
\n
\n
\n

dataSource

\n
\n

enum

\n

Source of events, either logs, audit trail, or Datadog events. \nAllowed enum values: logs,audit,app_sec_spans,spans,security_runtime,network,events

default: logs

\n
\n \n
\n
\n
\n
\n
\n

distinctFields

\n
\n

[string]

\n

Field for which the cardinality is measured. Sent as an array.

\n
\n \n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

hasOptionalGroupByFields

\n
\n

boolean

\n

When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with N/A, replacing the missing values.

\n
\n \n
\n
\n
\n
\n
\n

metrics

\n
\n

[string]

\n

Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the query.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

referenceTables

\n
\n

[object]

\n

Reference tables used in the queries.

\n
\n
\n
\n
\n
\n

checkPresence

\n
\n

boolean

\n

Whether to include or exclude the matched values.

\n
\n \n
\n
\n
\n
\n
\n

columnName

\n
\n

string

\n

The name of the column in the reference table.

\n
\n \n
\n
\n
\n
\n
\n

logFieldPath

\n
\n

string

\n

The field in the log to match against the reference table.

\n
\n \n
\n
\n
\n
\n
\n

ruleQueryName

\n
\n

string

\n

The name of the query to apply the reference table to.

\n
\n \n
\n
\n
\n
\n
\n

tableName

\n
\n

string

\n

The name of the reference table.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

Tags for generated signals.

\n
\n \n
\n
\n
\n
\n
\n

thirdPartyCases

\n
\n

[object]

\n

Cases for generating results from third-party detection method. Only available for third-party detection method.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets for each case.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

A query to map a third party event to this case.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

to [required]

\n
\n

int64

\n

Ending time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Job type.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

jobName

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

jobStatus

\n
\n

string

\n

Job status.

\n
\n \n
\n
\n
\n
\n
\n

modifiedAt

\n
\n

string

\n

Last modification time of the job.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

Type of payload. \nAllowed enum values: historicalDetectionsJob

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Threat hunting job response data.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Threat hunting job attributes.

\n
\n
\n
\n
\n
\n

createdAt

\n
\n

string

\n

Time when the job was created.

\n
\n \n
\n
\n
\n
\n
\n

createdByHandle

\n
\n

string

\n

The handle of the user who created the job.

\n
\n \n
\n
\n
\n
\n
\n

createdByName

\n
\n

string

\n

The name of the user who created the job.

\n
\n \n
\n
\n
\n
\n
\n

createdFromRuleId

\n
\n

string

\n

ID of the rule used to create the job (if it is created from a rule).

\n
\n \n
\n
\n
\n
\n
\n

jobDefinition

\n
\n

object

\n

Definition of a threat hunting job.

\n
\n
\n
\n
\n
\n

calculatedFields

\n
\n

[object]

\n

Calculated fields.

\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Expression.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Field name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

cases [required]

\n
\n

[object]

\n

Cases used for generating job results.

\n
\n
\n
\n
\n
\n

actions

\n
\n

[object]

\n

Action to perform for each rule case.

\n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Options for the rule action

\n
\n
\n
\n
\n
\n

duration

\n
\n

int64

\n

Duration of the action in seconds. 0 indicates no expiration.

\n
\n \n
\n
\n
\n
\n
\n

flaggedIPType

\n
\n

enum

\n

Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses. \nAllowed enum values: SUSPICIOUS,FLAGGED

\n
\n \n
\n
\n
\n
\n
\n

userBehaviorName

\n
\n

string

\n

Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The action type. \nAllowed enum values: block_ip,block_user,user_behavior,flag_ip

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

A case contains logical operations (>,>=, &&, ||) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

from [required]

\n
\n

int64

\n

Starting time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

groupSignalsBy

\n
\n

[string]

\n

Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.

\n
\n \n
\n
\n
\n
\n
\n

index [required]

\n
\n

string

\n

Index used to load the data.

\n
\n \n
\n
\n
\n
\n
\n

message [required]

\n
\n

string

\n

Message for generated results.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

Job options.

\n
\n
\n
\n
\n
\n

detectionMethod

\n
\n

enum

\n

The detection method. \nAllowed enum values: threshold,new_value,anomaly_detection,impossible_travel,hardcoded,third_party,anomaly_threshold,sequence_detection

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

impossibleTravelOptions

\n
\n

object

\n

Options on impossible travel detection method.

\n
\n
\n
\n
\n
\n

baselineUserLocations

\n
\n

boolean

\n

If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

keepAlive

\n
\n

enum

\n

Once a signal is generated, the signal will remain "open" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

maxSignalDuration

\n
\n

enum

\n

A signal will "close" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

newValueOptions

\n
\n

object

\n

Options on new value detection method.

\n
\n
\n
\n
\n
\n

forgetAfter

\n
\n

enum

\n

The duration in days after which a learned value is forgotten. \nAllowed enum values: 1,2,7,14,21,28

\n
\n \n
\n
\n
\n
\n
\n

learningDuration

\n
\n

enum

\n

The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned. \nAllowed enum values: 0,1,7

\n
\n \n
\n
\n
\n
\n
\n

learningMethod

\n
\n

enum

\n

The learning method used to determine when signals should be generated for values that weren't learned. \nAllowed enum values: duration,threshold

default: duration

\n
\n \n
\n
\n
\n
\n
\n

learningThreshold

\n
\n

enum

\n

A number of occurrences after which signals will be generated for values that weren't learned. \nAllowed enum values: 0,1

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

sequenceDetectionOptions

\n
\n

object

\n

Options on sequence detection method.

\n
\n
\n
\n
\n
\n

stepTransitions

\n
\n

[object]

\n

Transitions defining the allowed order of steps and their evaluation windows.

\n
\n
\n
\n
\n
\n

child

\n
\n

string

\n

Name of the child step.

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

parent

\n
\n

string

\n

Name of the parent step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

steps

\n
\n

[object]

\n

Steps that define the conditions to be matched in sequence.

\n
\n
\n
\n
\n
\n

condition

\n
\n

string

\n

Condition referencing rule queries (e.g., a > 0).

\n
\n \n
\n
\n
\n
\n
\n

evaluationWindow

\n
\n

enum

\n

A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used. \nAllowed enum values: 0,60,300,600,900,1800,3600,7200,10800,21600,43200,86400

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Unique name identifying the step.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

thirdPartyRuleOptions

\n
\n

object

\n

Options on third party detection method.

\n
\n
\n
\n
\n
\n

defaultNotifications

\n
\n

[string]

\n

Notification targets for the logs that do not correspond to any of the cases.

\n
\n \n
\n
\n
\n
\n
\n

defaultStatus

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n

rootQueries

\n
\n

[object]

\n

Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.

\n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

signalTitleTemplate

\n
\n

string

\n

A template for the signal title; if omitted, the title is generated based on the case name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

queries [required]

\n
\n

[object]

\n

Queries for selecting logs analyzed by the job.

\n
\n
\n
\n
\n
\n

aggregation

\n
\n

enum

\n

The aggregation type. \nAllowed enum values: count,cardinality,sum,max,new_value,geo_data,event_count,none

\n
\n \n
\n
\n
\n
\n
\n

dataSource

\n
\n

enum

\n

Source of events, either logs, audit trail, or Datadog events. \nAllowed enum values: logs,audit,app_sec_spans,spans,security_runtime,network,events

default: logs

\n
\n \n
\n
\n
\n
\n
\n

distinctFields

\n
\n

[string]

\n

Field for which the cardinality is measured. Sent as an array.

\n
\n \n
\n
\n
\n
\n
\n

groupByFields

\n
\n

[string]

\n

Fields to group by.

\n
\n \n
\n
\n
\n
\n
\n

hasOptionalGroupByFields

\n
\n

boolean

\n

When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with N/A, replacing the missing values.

\n
\n \n
\n
\n
\n
\n
\n

metrics

\n
\n

[string]

\n

Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the query.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

Query to run on logs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

referenceTables

\n
\n

[object]

\n

Reference tables used in the queries.

\n
\n
\n
\n
\n
\n

checkPresence

\n
\n

boolean

\n

Whether to include or exclude the matched values.

\n
\n \n
\n
\n
\n
\n
\n

columnName

\n
\n

string

\n

The name of the column in the reference table.

\n
\n \n
\n
\n
\n
\n
\n

logFieldPath

\n
\n

string

\n

The field in the log to match against the reference table.

\n
\n \n
\n
\n
\n
\n
\n

ruleQueryName

\n
\n

string

\n

The name of the query to apply the reference table to.

\n
\n \n
\n
\n
\n
\n
\n

tableName

\n
\n

string

\n

The name of the reference table.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

Tags for generated signals.

\n
\n \n
\n
\n
\n
\n
\n

thirdPartyCases

\n
\n

[object]

\n

Cases for generating results from third-party detection method. Only available for third-party detection method.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the case.

\n
\n \n
\n
\n
\n
\n
\n

notifications

\n
\n

[string]

\n

Notification targets for each case.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

A query to map a third party event to this case.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Severity of the Security Signal. \nAllowed enum values: info,low,medium,high,critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

to [required]

\n
\n

int64

\n

Ending time of data analyzed by the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Job type.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

jobName

\n
\n

string

\n

Job name.

\n
\n \n
\n
\n
\n
\n
\n

jobStatus

\n
\n

string

\n

Job status.

\n
\n \n
\n
\n
\n
\n
\n

modifiedAt

\n
\n

string

\n

Last modification time of the job.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the job.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

Type of payload. \nAllowed enum values: historicalDetectionsJob

\n
\n \n
\n
\n
\n
" }, "400": { "json": { @@ -7144,7 +7144,7 @@ "html": "" } }, - "CancelHistoricalJob": { + "CancelThreatHuntingJob": { "responses": { "400": { "json": { diff --git a/content/en/api/v2/security-monitoring/request.RunThreatHuntingJob.json b/content/en/api/v2/security-monitoring/request.RunThreatHuntingJob.json new file mode 100644 index 0000000000000..1d9c4b4a9253c --- /dev/null +++ b/content/en/api/v2/security-monitoring/request.RunThreatHuntingJob.json @@ -0,0 +1,37 @@ +{ + "data": { + "type": "historicalDetectionsJobCreate", + "attributes": { + "jobDefinition": { + "type": "log_detection", + "name": "Excessive number of failed attempts.", + "queries": [ + { + "query": "source:non_existing_src_weekend", + "aggregation": "count", + "groupByFields": [], + "distinctFields": [] + } + ], + "cases": [ + { + "name": "Condition 1", + "status": "info", + "notifications": [], + "condition": "a > 1" + } + ], + "options": { + "keepAlive": 3600, + "maxSignalDuration": 86400, + "evaluationWindow": 900 + }, + "message": "A large number of failed login attempts.", + "tags": [], + "from": 1730387522611, + "to": 1730387532611, + "index": "main" + } + } + } +} \ No newline at end of file diff --git a/data/api/v2/CodeExamples.json b/data/api/v2/CodeExamples.json index ea610bc35cc34..b91ad274cdd00 100644 --- a/data/api/v2/CodeExamples.json +++ b/data/api/v2/CodeExamples.json @@ -1532,11 +1532,11 @@ "description": "Patch a vulnerability-based notification rule returns \"Notification rule successfully patched.\" response" } ], - "RunHistoricalJob": [ + "RunThreatHuntingJob": [ { "group": "security_monitoring", "suffix": "", - "description": "Run a historical job returns \"Status created\" response" + "description": "Run a threat hunting job returns \"Status created\" response" } ], "TestSecurityMonitoringRule": [ diff --git a/data/api/v2/full_spec.yaml b/data/api/v2/full_spec.yaml index a3b8f03052078..e1378527bbedf 100644 --- a/data/api/v2/full_spec.yaml +++ b/data/api/v2/full_spec.yaml @@ -458,20 +458,6 @@ components: items: $ref: '#/components/schemas/GetIssueIncludeQueryParameterItem' type: array - HistoricalJobID: - description: The ID of the job. - in: path - name: job_id - required: true - schema: - type: string - HistoricalSignalID: - description: The ID of the historical signal. - in: path - name: histsignal_id - required: true - schema: - type: string IncidentAttachmentFilterQueryParameter: description: Specifies which types of attachments are included in the response. explode: false @@ -1098,6 +1084,20 @@ components: required: true schema: type: string + ThreatHuntingJobID: + description: The ID of the job. + in: path + name: job_id + required: true + schema: + type: string + ThreatHuntingSignalID: + description: The ID of the threat hunting signal. + in: path + name: histsignal_id + required: true + schema: + type: string UserID: description: The ID of the user. in: path @@ -11814,7 +11814,7 @@ components: - GZIP - DEFLATE ConvertJobResultsToSignalsAttributes: - description: Attributes for converting historical job results to signals. + description: Attributes for converting threat hunting job results to signals. properties: id: description: Request ID. @@ -11846,7 +11846,7 @@ components: - notifications type: object ConvertJobResultsToSignalsData: - description: Data for converting historical job results to signals. + description: Data for converting threat hunting job results to signals. properties: attributes: $ref: '#/components/schemas/ConvertJobResultsToSignalsAttributes' @@ -11861,7 +11861,7 @@ components: x-enum-varnames: - HISTORICALDETECTIONSJOBRESULTSIGNALCONVERSION ConvertJobResultsToSignalsRequest: - description: Request for converting historical job results to signals. + description: Request for converting threat hunting job results to signals. properties: data: $ref: '#/components/schemas/ConvertJobResultsToSignalsData' @@ -22204,130 +22204,6 @@ components: - type - value type: object - HistoricalJobDataType: - description: Type of payload. - enum: - - historicalDetectionsJob - type: string - x-enum-varnames: - - HISTORICALDETECTIONSJOB - HistoricalJobListMeta: - description: Metadata about the list of jobs. - properties: - totalCount: - description: Number of jobs in the list. - format: int32 - maximum: 2147483647 - type: integer - type: object - HistoricalJobOptions: - description: Job options. - properties: - detectionMethod: - $ref: '#/components/schemas/SecurityMonitoringRuleDetectionMethod' - evaluationWindow: - $ref: '#/components/schemas/SecurityMonitoringRuleEvaluationWindow' - impossibleTravelOptions: - $ref: '#/components/schemas/SecurityMonitoringRuleImpossibleTravelOptions' - keepAlive: - $ref: '#/components/schemas/SecurityMonitoringRuleKeepAlive' - maxSignalDuration: - $ref: '#/components/schemas/SecurityMonitoringRuleMaxSignalDuration' - newValueOptions: - $ref: '#/components/schemas/SecurityMonitoringRuleNewValueOptions' - sequenceDetectionOptions: - $ref: '#/components/schemas/SecurityMonitoringRuleSequenceDetectionOptions' - thirdPartyRuleOptions: - $ref: '#/components/schemas/SecurityMonitoringRuleThirdPartyOptions' - type: object - HistoricalJobQuery: - description: Query for selecting logs analyzed by the historical job. - properties: - aggregation: - $ref: '#/components/schemas/SecurityMonitoringRuleQueryAggregation' - dataSource: - $ref: '#/components/schemas/SecurityMonitoringStandardDataSource' - distinctFields: - description: Field for which the cardinality is measured. Sent as an array. - items: - description: Field. - type: string - type: array - groupByFields: - description: Fields to group by. - items: - description: Field. - type: string - type: array - hasOptionalGroupByFields: - default: false - description: When false, events without a group-by value are ignored by - the query. When true, events with missing group-by fields are processed - with `N/A`, replacing the missing values. - example: false - type: boolean - metrics: - description: Group of target fields to aggregate over when using the sum, - max, geo data, or new value aggregations. The sum, max, and geo data aggregations - only accept one value in this list, whereas the new value aggregation - accepts up to five values. - items: - description: Field. - type: string - type: array - name: - description: Name of the query. - type: string - query: - description: Query to run on logs. - example: a > 3 - type: string - type: object - HistoricalJobResponse: - description: Historical job response. - properties: - data: - $ref: '#/components/schemas/HistoricalJobResponseData' - type: object - HistoricalJobResponseAttributes: - description: Historical job attributes. - properties: - createdAt: - description: Time when the job was created. - type: string - createdByHandle: - description: The handle of the user who created the job. - type: string - createdByName: - description: The name of the user who created the job. - type: string - createdFromRuleId: - description: ID of the rule used to create the job (if it is created from - a rule). - type: string - jobDefinition: - $ref: '#/components/schemas/JobDefinition' - jobName: - description: Job name. - type: string - jobStatus: - description: Job status. - type: string - modifiedAt: - description: Last modification time of the job. - type: string - type: object - HistoricalJobResponseData: - description: Historical job response data. - properties: - attributes: - $ref: '#/components/schemas/HistoricalJobResponseAttributes' - id: - description: ID of the job. - type: string - type: - $ref: '#/components/schemas/HistoricalJobDataType' - type: object HourlyUsage: description: Hourly usage for a product family for an org. properties: @@ -26508,7 +26384,7 @@ components: type: string type: object JobCreateResponse: - description: Run a historical job response. + description: Run a threat hunting job response. properties: data: $ref: '#/components/schemas/JobCreateResponseData' @@ -26520,10 +26396,10 @@ components: description: ID of the created job. type: string type: - $ref: '#/components/schemas/HistoricalJobDataType' + $ref: '#/components/schemas/ThreatHuntingJobDataType' type: object JobDefinition: - description: Definition of a historical job. + description: Definition of a threat hunting job. properties: calculatedFields: description: Calculated fields. @@ -26562,11 +26438,11 @@ components: example: Excessive number of failed attempts. type: string options: - $ref: '#/components/schemas/HistoricalJobOptions' + $ref: '#/components/schemas/ThreatHuntingJobOptions' queries: description: Queries for selecting logs analyzed by the job. items: - $ref: '#/components/schemas/HistoricalJobQuery' + $ref: '#/components/schemas/ThreatHuntingJobQuery' type: array referenceTables: description: Reference tables used in the queries. @@ -26603,7 +26479,8 @@ components: - message type: object JobDefinitionFromRule: - description: Definition of a historical job based on a security monitoring rule. + description: Definition of a threat hunting job based on a security monitoring + rule. properties: from: description: Starting time of data analyzed by the job. @@ -27545,17 +27422,6 @@ components: - data - meta type: object - ListHistoricalJobsResponse: - description: List of historical jobs. - properties: - data: - description: Array containing the list of historical jobs. - items: - $ref: '#/components/schemas/HistoricalJobResponseData' - type: array - meta: - $ref: '#/components/schemas/HistoricalJobListMeta' - type: object ListKindCatalogResponse: description: List kind response. properties: @@ -27723,6 +27589,17 @@ components: - _NAME - USER_COUNT - _USER_COUNT + ListThreatHuntingJobsResponse: + description: List of threat hunting jobs. + properties: + data: + description: Array containing the list of threat hunting jobs. + items: + $ref: '#/components/schemas/ThreatHuntingJobResponseData' + type: array + meta: + $ref: '#/components/schemas/ThreatHuntingJobListMeta' + type: object ListVulnerabilitiesResponse: description: The expected response schema when listing vulnerabilities. properties: @@ -41956,14 +41833,18 @@ components: $ref: '#/components/schemas/RumRetentionFilterData' type: array type: object - RunHistoricalJobRequest: - description: Run a historical job request. + RunRetentionFilterName: + description: The name of a RUM retention filter. + example: Retention filter for session + type: string + RunThreatHuntingJobRequest: + description: Run a threat hunting job request. properties: data: - $ref: '#/components/schemas/RunHistoricalJobRequestData' + $ref: '#/components/schemas/RunThreatHuntingJobRequestData' type: object - RunHistoricalJobRequestAttributes: - description: Run a historical job request. + RunThreatHuntingJobRequestAttributes: + description: Run a threat hunting job request. properties: fromRule: $ref: '#/components/schemas/JobDefinitionFromRule' @@ -41973,25 +41854,21 @@ components: jobDefinition: $ref: '#/components/schemas/JobDefinition' type: object - RunHistoricalJobRequestData: - description: Data for running a historical job request. + RunThreatHuntingJobRequestData: + description: Data for running a threat hunting job request. properties: attributes: - $ref: '#/components/schemas/RunHistoricalJobRequestAttributes' + $ref: '#/components/schemas/RunThreatHuntingJobRequestAttributes' type: - $ref: '#/components/schemas/RunHistoricalJobRequestDataType' + $ref: '#/components/schemas/RunThreatHuntingJobRequestDataType' type: object - RunHistoricalJobRequestDataType: + RunThreatHuntingJobRequestDataType: description: Type of data. enum: - historicalDetectionsJobCreate type: string x-enum-varnames: - HISTORICALDETECTIONSJOBCREATE - RunRetentionFilterName: - description: The name of a RUM retention filter. - example: Retention filter for session - type: string SAMLAssertionAttribute: description: SAML assertion attribute. properties: @@ -50876,6 +50753,130 @@ components: description: Offset type. type: string type: object + ThreatHuntingJobDataType: + description: Type of payload. + enum: + - historicalDetectionsJob + type: string + x-enum-varnames: + - HISTORICALDETECTIONSJOB + ThreatHuntingJobListMeta: + description: Metadata about the list of jobs. + properties: + totalCount: + description: Number of jobs in the list. + format: int32 + maximum: 2147483647 + type: integer + type: object + ThreatHuntingJobOptions: + description: Job options. + properties: + detectionMethod: + $ref: '#/components/schemas/SecurityMonitoringRuleDetectionMethod' + evaluationWindow: + $ref: '#/components/schemas/SecurityMonitoringRuleEvaluationWindow' + impossibleTravelOptions: + $ref: '#/components/schemas/SecurityMonitoringRuleImpossibleTravelOptions' + keepAlive: + $ref: '#/components/schemas/SecurityMonitoringRuleKeepAlive' + maxSignalDuration: + $ref: '#/components/schemas/SecurityMonitoringRuleMaxSignalDuration' + newValueOptions: + $ref: '#/components/schemas/SecurityMonitoringRuleNewValueOptions' + sequenceDetectionOptions: + $ref: '#/components/schemas/SecurityMonitoringRuleSequenceDetectionOptions' + thirdPartyRuleOptions: + $ref: '#/components/schemas/SecurityMonitoringRuleThirdPartyOptions' + type: object + ThreatHuntingJobQuery: + description: Query for selecting logs analyzed by the threat hunting job. + properties: + aggregation: + $ref: '#/components/schemas/SecurityMonitoringRuleQueryAggregation' + dataSource: + $ref: '#/components/schemas/SecurityMonitoringStandardDataSource' + distinctFields: + description: Field for which the cardinality is measured. Sent as an array. + items: + description: Field. + type: string + type: array + groupByFields: + description: Fields to group by. + items: + description: Field. + type: string + type: array + hasOptionalGroupByFields: + default: false + description: When false, events without a group-by value are ignored by + the query. When true, events with missing group-by fields are processed + with `N/A`, replacing the missing values. + example: false + type: boolean + metrics: + description: Group of target fields to aggregate over when using the sum, + max, geo data, or new value aggregations. The sum, max, and geo data aggregations + only accept one value in this list, whereas the new value aggregation + accepts up to five values. + items: + description: Field. + type: string + type: array + name: + description: Name of the query. + type: string + query: + description: Query to run on logs. + example: a > 3 + type: string + type: object + ThreatHuntingJobResponse: + description: Threat hunting job response. + properties: + data: + $ref: '#/components/schemas/ThreatHuntingJobResponseData' + type: object + ThreatHuntingJobResponseAttributes: + description: Threat hunting job attributes. + properties: + createdAt: + description: Time when the job was created. + type: string + createdByHandle: + description: The handle of the user who created the job. + type: string + createdByName: + description: The name of the user who created the job. + type: string + createdFromRuleId: + description: ID of the rule used to create the job (if it is created from + a rule). + type: string + jobDefinition: + $ref: '#/components/schemas/JobDefinition' + jobName: + description: Job name. + type: string + jobStatus: + description: Job status. + type: string + modifiedAt: + description: Last modification time of the job. + type: string + type: object + ThreatHuntingJobResponseData: + description: Threat hunting job response data. + properties: + attributes: + $ref: '#/components/schemas/ThreatHuntingJobResponseAttributes' + id: + description: ID of the job. + type: string + type: + $ref: '#/components/schemas/ThreatHuntingJobDataType' + type: object TimeAggregation: description: 'Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation. @@ -78302,7 +78303,7 @@ paths: permissions: - incident_settings_write x-unstable: '**Note**: This endpoint is deprecated.' - /api/v2/siem-historical-detections/histsignals: + /api/v2/siem-threat-hunting/histsignals: get: description: List hist signals. operationId: ListSecurityMonitoringHistsignals @@ -78344,7 +78345,7 @@ paths: x-unstable: '**Note**: This endpoint is in beta and may be subject to changes. Please check the documentation regularly for updates.' - /api/v2/siem-historical-detections/histsignals/search: + /api/v2/siem-threat-hunting/histsignals/search: get: description: Search hist signals. operationId: SearchSecurityMonitoringHistsignals @@ -78385,12 +78386,12 @@ paths: x-unstable: '**Note**: This endpoint is in beta and may be subject to changes. Please check the documentation regularly for updates.' - /api/v2/siem-historical-detections/histsignals/{histsignal_id}: + /api/v2/siem-threat-hunting/histsignals/{histsignal_id}: get: description: Get a hist signal's details. operationId: GetSecurityMonitoringHistsignal parameters: - - $ref: '#/components/parameters/HistoricalSignalID' + - $ref: '#/components/parameters/ThreatHuntingSignalID' responses: '200': content: @@ -78422,10 +78423,10 @@ paths: x-unstable: '**Note**: This endpoint is in beta and may be subject to changes. Please check the documentation regularly for updates.' - /api/v2/siem-historical-detections/jobs: + /api/v2/siem-threat-hunting/jobs: get: - description: List historical jobs. - operationId: ListHistoricalJobs + description: List threat hunting jobs. + operationId: ListThreatHuntingJobs parameters: - $ref: '#/components/parameters/PageSize' - $ref: '#/components/parameters/PageNumber' @@ -78448,7 +78449,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListHistoricalJobsResponse' + $ref: '#/components/schemas/ListThreatHuntingJobsResponse' description: OK '400': $ref: '#/components/responses/BadRequestResponse' @@ -78460,7 +78461,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: List historical jobs + summary: List threat hunting jobs tags: - Security Monitoring x-menu-order: 20 @@ -78468,13 +78469,13 @@ paths: Please check the documentation regularly for updates.' post: - description: Run a historical job. - operationId: RunHistoricalJob + description: Run a threat hunting job. + operationId: RunThreatHuntingJob requestBody: content: application/json: schema: - $ref: '#/components/schemas/RunHistoricalJobRequest' + $ref: '#/components/schemas/RunThreatHuntingJobRequest' required: true responses: '201': @@ -78498,7 +78499,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_rules_write - summary: Run a historical job + summary: Run a threat hunting job tags: - Security Monitoring x-codegen-request-body-name: body @@ -78510,7 +78511,7 @@ paths: x-unstable: '**Note**: This endpoint is in beta and may be subject to changes. Please check the documentation regularly for updates.' - /api/v2/siem-historical-detections/jobs/signal_convert: + /api/v2/siem-threat-hunting/jobs/signal_convert: post: description: Convert a job result to a signal. operationId: ConvertJobResultToSignal @@ -78545,12 +78546,12 @@ paths: x-unstable: '**Note**: This endpoint is in beta and may be subject to changes. Please check the documentation regularly for updates.' - /api/v2/siem-historical-detections/jobs/{job_id}: + /api/v2/siem-threat-hunting/jobs/{job_id}: delete: description: Delete an existing job. - operationId: DeleteHistoricalJob + operationId: DeleteThreatHuntingJob parameters: - - $ref: '#/components/parameters/HistoricalJobID' + - $ref: '#/components/parameters/ThreatHuntingJobID' responses: '204': description: OK @@ -78579,15 +78580,15 @@ paths: Please check the documentation regularly for updates.' get: description: Get a job's details. - operationId: GetHistoricalJob + operationId: GetThreatHuntingJob parameters: - - $ref: '#/components/parameters/HistoricalJobID' + - $ref: '#/components/parameters/ThreatHuntingJobID' responses: '200': content: application/json: schema: - $ref: '#/components/schemas/HistoricalJobResponse' + $ref: '#/components/schemas/ThreatHuntingJobResponse' description: OK '400': $ref: '#/components/responses/BadRequestResponse' @@ -78613,12 +78614,12 @@ paths: x-unstable: '**Note**: This endpoint is in beta and may be subject to changes. Please check the documentation regularly for updates.' - /api/v2/siem-historical-detections/jobs/{job_id}/cancel: + /api/v2/siem-threat-hunting/jobs/{job_id}/cancel: patch: - description: Cancel a historical job. - operationId: CancelHistoricalJob + description: Cancel a threat hunting job. + operationId: CancelThreatHuntingJob parameters: - - $ref: '#/components/parameters/HistoricalJobID' + - $ref: '#/components/parameters/ThreatHuntingJobID' responses: '204': description: OK @@ -78639,7 +78640,7 @@ paths: appKeyAuth: [] - AuthZ: - security_monitoring_rules_write - summary: Cancel a historical job + summary: Cancel a threat hunting job tags: - Security Monitoring x-menu-order: 22 @@ -78650,12 +78651,12 @@ paths: x-unstable: '**Note**: This endpoint is in beta and may be subject to changes. Please check the documentation regularly for updates.' - /api/v2/siem-historical-detections/jobs/{job_id}/histsignals: + /api/v2/siem-threat-hunting/jobs/{job_id}/histsignals: get: description: Get a job's hist signals. operationId: GetSecurityMonitoringHistsignalsByJobId parameters: - - $ref: '#/components/parameters/HistoricalJobID' + - $ref: '#/components/parameters/ThreatHuntingJobID' - $ref: '#/components/parameters/QueryFilterSearch' - $ref: '#/components/parameters/QueryFilterFrom' - $ref: '#/components/parameters/QueryFilterTo' diff --git a/data/api/v2/full_spec_deref.json b/data/api/v2/full_spec_deref.json index 7f036619dbe0b..b9dc3816ef918 100644 --- a/data/api/v2/full_spec_deref.json +++ b/data/api/v2/full_spec_deref.json @@ -670,24 +670,6 @@ "type": "array" } }, - "HistoricalJobID": { - "description": "The ID of the job.", - "in": "path", - "name": "job_id", - "required": true, - "schema": { - "type": "string" - } - }, - "HistoricalSignalID": { - "description": "The ID of the historical signal.", - "in": "path", - "name": "histsignal_id", - "required": true, - "schema": { - "type": "string" - } - }, "IncidentAttachmentFilterQueryParameter": { "description": "Specifies which types of attachments are included in the response.", "explode": false, @@ -1590,6 +1572,24 @@ "type": "string" } }, + "ThreatHuntingJobID": { + "description": "The ID of the job.", + "in": "path", + "name": "job_id", + "required": true, + "schema": { + "type": "string" + } + }, + "ThreatHuntingSignalID": { + "description": "The ID of the threat hunting signal.", + "in": "path", + "name": "histsignal_id", + "required": true, + "schema": { + "type": "string" + } + }, "UserID": { "description": "The ID of the user.", "in": "path", @@ -72854,7 +72854,7 @@ ] }, "ConvertJobResultsToSignalsAttributes": { - "description": "Attributes for converting historical job results to signals.", + "description": "Attributes for converting threat hunting job results to signals.", "properties": { "id": { "description": "Request ID.", @@ -72914,10 +72914,10 @@ "type": "object" }, "ConvertJobResultsToSignalsData": { - "description": "Data for converting historical job results to signals.", + "description": "Data for converting threat hunting job results to signals.", "properties": { "attributes": { - "description": "Attributes for converting historical job results to signals.", + "description": "Attributes for converting threat hunting job results to signals.", "properties": { "id": { "description": "Request ID.", @@ -73000,13 +73000,13 @@ ] }, "ConvertJobResultsToSignalsRequest": { - "description": "Request for converting historical job results to signals.", + "description": "Request for converting threat hunting job results to signals.", "properties": { "data": { - "description": "Data for converting historical job results to signals.", + "description": "Data for converting threat hunting job results to signals.", "properties": { "attributes": { - "description": "Attributes for converting historical job results to signals.", + "description": "Attributes for converting threat hunting job results to signals.", "properties": { "id": { "description": "Request ID.", @@ -140096,336 +140096,450 @@ ], "type": "object" }, - "HistoricalJobDataType": { - "description": "Type of payload.", - "enum": [ - "historicalDetectionsJob" - ], - "type": "string", - "x-enum-varnames": [ - "HISTORICALDETECTIONSJOB" - ] - }, - "HistoricalJobListMeta": { - "description": "Metadata about the list of jobs.", - "properties": { - "totalCount": { - "description": "Number of jobs in the list.", - "format": "int32", - "maximum": 2147483647, - "type": "integer" - } - }, - "type": "object" - }, - "HistoricalJobOptions": { - "description": "Job options.", + "HourlyUsage": { + "description": "Hourly usage for a product family for an org.", "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", + "attributes": { + "description": "Attributes of hourly usage for a product family for an org for a time period.", "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" + "account_name": { + "description": "The account name.", + "type": "string" + }, + "account_public_id": { + "description": "The account public ID.", + "type": "string" + }, + "measurements": { + "description": "List of the measured usage values for the product family for the org for the time period.", + "items": { + "description": "Usage amount for a given usage type.", + "properties": { + "usage_type": { + "description": "Type of usage.", + "type": "string" + }, + "value": { + "description": "Contains the number measured for the given usage_type during the hour.", + "format": "int64", + "nullable": true, + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "org_name": { + "description": "The organization name.", + "type": "string" + }, + "product_family": { + "description": "The product for which usage is being reported.", + "type": "string" + }, + "public_id": { + "description": "The organization public ID.", + "type": "string" + }, + "region": { + "description": "The region of the Datadog instance that the organization belongs to.", + "type": "string" + }, + "timestamp": { + "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", + "format": "date-time", + "type": "string" } }, "type": "object" }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] + "id": { + "description": "Unique ID of the response.", + "type": "string" }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "type": { + "default": "usage_timeseries", + "description": "Type of usage data.", "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 + "usage_timeseries" ], - "format": "int32", - "type": "integer", + "example": "usage_timeseries", + "type": "string", "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" + "USAGE_TIMESERIES" ] + } + }, + "type": "object" + }, + "HourlyUsageAttributes": { + "description": "Attributes of hourly usage for a product family for an org for a time period.", + "properties": { + "account_name": { + "description": "The account name.", + "type": "string" }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] + "account_public_id": { + "description": "The account public ID.", + "type": "string" + }, + "measurements": { + "description": "List of the measured usage values for the product family for the org for the time period.", + "items": { + "description": "Usage amount for a given usage type.", + "properties": { + "usage_type": { + "description": "Type of usage.", + "type": "string" + }, + "value": { + "description": "Contains the number measured for the given usage_type during the hour.", + "format": "int64", + "nullable": true, + "type": "integer" + } }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } + "type": "object" }, - "type": "object" + "type": "array" }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", + "org_name": { + "description": "The organization name.", + "type": "string" + }, + "product_family": { + "description": "The product for which usage is being reported.", + "type": "string" + }, + "public_id": { + "description": "The organization public ID.", + "type": "string" + }, + "region": { + "description": "The region of the Datadog instance that the organization belongs to.", + "type": "string" + }, + "timestamp": { + "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "HourlyUsageMeasurement": { + "description": "Usage amount for a given usage type.", + "properties": { + "usage_type": { + "description": "Type of usage.", + "type": "string" + }, + "value": { + "description": "Contains the number measured for the given usage_type during the hour.", + "format": "int64", + "nullable": true, + "type": "integer" + } + }, + "type": "object" + }, + "HourlyUsageMetadata": { + "description": "The object containing document metadata.", + "properties": { + "pagination": { + "description": "The metadata for the current pagination.", "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", + "next_record_id": { + "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", + "nullable": true, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "HourlyUsagePagination": { + "description": "The metadata for the current pagination.", + "properties": { + "next_record_id": { + "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "HourlyUsageResponse": { + "description": "Hourly usage response.", + "properties": { + "data": { + "description": "Response containing hourly usage.", + "items": { + "description": "Hourly usage for a product family for an org.", + "properties": { + "attributes": { + "description": "Attributes of hourly usage for a product family for an org for a time period.", "properties": { - "child": { - "description": "Name of the child step.", + "account_name": { + "description": "The account name.", "type": "string" }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] + "account_public_id": { + "description": "The account public ID.", + "type": "string" }, - "parent": { - "description": "Name of the parent step.", + "measurements": { + "description": "List of the measured usage values for the product family for the org for the time period.", + "items": { + "description": "Usage amount for a given usage type.", + "properties": { + "usage_type": { + "description": "Type of usage.", + "type": "string" + }, + "value": { + "description": "Contains the number measured for the given usage_type during the hour.", + "format": "int64", + "nullable": true, + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "org_name": { + "description": "The organization name.", + "type": "string" + }, + "product_family": { + "description": "The product for which usage is being reported.", + "type": "string" + }, + "public_id": { + "description": "The organization public ID.", + "type": "string" + }, + "region": { + "description": "The region of the Datadog instance that the organization belongs to.", + "type": "string" + }, + "timestamp": { + "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", + "format": "date-time", "type": "string" } }, "type": "object" }, - "type": "array" + "id": { + "description": "Unique ID of the response.", + "type": "string" + }, + "type": { + "default": "usage_timeseries", + "description": "Type of usage data.", + "enum": [ + "usage_timeseries" + ], + "example": "usage_timeseries", + "type": "string", + "x-enum-varnames": [ + "USAGE_TIMESERIES" + ] + } }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "The object containing document metadata.", + "properties": { + "pagination": { + "description": "The metadata for the current pagination.", + "properties": { + "next_record_id": { + "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", + "nullable": true, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "HourlyUsageType": { + "description": "Usage type that is being measured.", + "enum": [ + "app_sec_host_count", + "observability_pipelines_bytes_processed", + "lambda_traced_invocations_count" + ], + "example": "observability_pipelines_bytes_processed", + "type": "string", + "x-enum-varnames": [ + "APP_SEC_HOST_COUNT", + "OBSERVABILITY_PIPELINES_BYTES_PROCESSSED", + "LAMBDA_TRACED_INVOCATIONS_COUNT" + ] + }, + "ID": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "IPAllowlistAttributes": { + "description": "Attributes of the IP allowlist.", + "properties": { + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean" + }, + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The unique identifier of the IP allowlist entry.", "type": "string" }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 + "ip_allowlist_entry" ], - "format": "int32", - "type": "integer", + "example": "ip_allowlist_entry", + "type": "string", "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" + "IP_ALLOWLIST_ENTRY" ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" } }, + "required": [ + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "IPAllowlistData": { + "description": "IP allowlist data.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist.", + "properties": { + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean" + }, + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The unique identifier of the IP allowlist entry.", + "type": "string" + }, + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", + "enum": [ + "ip_allowlist_entry" + ], + "example": "ip_allowlist_entry", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST_ENTRY" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], "type": "object" }, "type": "array" @@ -140433,3490 +140547,494 @@ }, "type": "object" }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", + "id": { + "description": "The unique identifier of the org.", + "type": "string" + }, + "type": { + "default": "ip_allowlist", + "description": "IP allowlist type.", + "enum": [ + "ip_allowlist" + ], + "example": "ip_allowlist", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "IPAllowlistEntry": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", - "type": "string" + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } }, - "type": "array" + "type": "object" }, - "defaultStatus": { - "description": "Severity of the Security Signal.", + "id": { + "description": "The unique identifier of the IP allowlist entry.", + "type": "string" + }, + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", "enum": [ - "info", - "low", - "medium", - "high", - "critical" + "ip_allowlist_entry" ], - "example": "critical", + "example": "ip_allowlist_entry", "type": "string", "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" + "IP_ALLOWLIST_ENTRY" ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" } }, + "required": [ + "type" + ], "type": "object" } }, + "required": [ + "data" + ], "type": "object" }, - "HistoricalJobQuery": { - "description": "Query for selecting logs analyzed by the historical job.", + "IPAllowlistEntryAttributes": { + "description": "Attributes of the IP allowlist entry.", "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } + }, + "type": "object" + }, + "IPAllowlistEntryData": { + "description": "Data of the IP allowlist entry object.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } }, - "type": "array" + "type": "object" }, - "name": { - "description": "Name of the query.", + "id": { + "description": "The unique identifier of the IP allowlist entry.", "type": "string" }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", + "enum": [ + "ip_allowlist_entry" + ], + "example": "ip_allowlist_entry", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST_ENTRY" + ] } }, + "required": [ + "type" + ], "type": "object" }, - "HistoricalJobResponse": { - "description": "Historical job response.", + "IPAllowlistEntryType": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", + "enum": [ + "ip_allowlist_entry" + ], + "example": "ip_allowlist_entry", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST_ENTRY" + ] + }, + "IPAllowlistResponse": { + "description": "Response containing information about the IP allowlist.", "properties": { "data": { - "description": "Historical job response data.", + "description": "IP allowlist data.", "properties": { "attributes": { - "description": "Historical job attributes.", + "description": "Attributes of the IP allowlist.", "properties": { - "createdAt": { - "description": "Time when the job was created.", - "type": "string" - }, - "createdByHandle": { - "description": "The handle of the user who created the job.", - "type": "string" - }, - "createdByName": { - "description": "The name of the user who created the job.", - "type": "string" - }, - "createdFromRuleId": { - "description": "ID of the rule used to create the job (if it is created from a rule).", - "type": "string" + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean" }, - "jobDefinition": { - "description": "Definition of a historical job.", - "properties": { - "calculatedFields": { - "description": "Calculated fields.", - "items": { - "description": "Calculated field.", - "properties": { - "expression": { - "description": "Expression.", - "example": "@request_end_timestamp - @request_start_timestamp", - "type": "string" - }, - "name": { - "description": "Field name.", - "example": "response_time", - "type": "string" - } - }, - "required": [ - "name", - "expression" - ], - "type": "object" - }, - "type": "array" - }, - "cases": { - "description": "Cases used for generating job results.", - "items": { - "description": "Case when signal is generated.", + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", "properties": { - "actions": { - "description": "Action to perform for each rule case.", - "items": { - "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", - "properties": { - "options": { - "additionalProperties": {}, - "description": "Options for the rule action", - "properties": { - "duration": { - "description": "Duration of the action in seconds. 0 indicates no expiration.", - "example": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "flaggedIPType": { - "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", - "enum": [ - "SUSPICIOUS", - "FLAGGED" - ], - "example": "FLAGGED", - "type": "string", - "x-enum-varnames": [ - "SUSPICIOUS", - "FLAGGED" - ] - }, - "userBehaviorName": { - "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "description": "The action type.", - "enum": [ - "block_ip", - "block_user", - "user_behavior", - "flag_ip" - ], - "type": "string", - "x-enum-varnames": [ - "BLOCK_IP", - "BLOCK_USER", - "USER_BEHAVIOR", - "FLAG_IP" - ] - } + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" }, - "type": "object" + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } }, - "type": "array" - }, - "condition": { - "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", - "type": "string" + "type": "object" }, - "name": { - "description": "Name of the case.", + "id": { + "description": "The unique identifier of the IP allowlist entry.", "type": "string" }, - "notifications": { - "description": "Notification targets.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "Severity of the Security Signal.", + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", "enum": [ - "info", - "low", - "medium", - "high", - "critical" + "ip_allowlist_entry" ], - "example": "critical", + "example": "ip_allowlist_entry", "type": "string", "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" + "IP_ALLOWLIST_ENTRY" ] } }, "required": [ - "status" + "type" ], "type": "object" - }, - "type": "array" - }, - "from": { - "description": "Starting time of data analyzed by the job.", - "example": 1729843470000, - "format": "int64", - "type": "integer" - }, - "groupSignalsBy": { - "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", - "example": [ - "service" - ], - "items": { - "description": "Field to group by.", - "type": "string" - }, - "type": "array" - }, - "index": { - "description": "Index used to load the data.", - "example": "cloud_siem", - "type": "string" - }, - "message": { - "description": "Message for generated results.", - "example": "A large number of failed login attempts.", - "type": "string" - }, - "name": { - "description": "Job name.", - "example": "Excessive number of failed attempts.", - "type": "string" + } }, - "options": { - "description": "Job options.", - "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", - "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] - }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } - }, - "type": "object" - }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", - "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", - "properties": { - "child": { - "description": "Name of the child step.", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "parent": { - "description": "Name of the parent step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", - "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" - } - }, - "type": "object" + "required": [ + "data" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The unique identifier of the org.", + "type": "string" + }, + "type": { + "default": "ip_allowlist", + "description": "IP allowlist type.", + "enum": [ + "ip_allowlist" + ], + "example": "ip_allowlist", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + } + }, + "type": "object" + }, + "IPAllowlistType": { + "default": "ip_allowlist", + "description": "IP allowlist type.", + "enum": [ + "ip_allowlist" + ], + "example": "ip_allowlist", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST" + ] + }, + "IPAllowlistUpdateRequest": { + "description": "Update the IP allowlist.", + "properties": { + "data": { + "description": "IP allowlist data.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist.", + "properties": { + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean" + }, + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" }, - "type": "array" - } - }, - "type": "object" - }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", - "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, "type": "string" }, - "type": "array" - }, - "defaultStatus": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "queries": { - "description": "Queries for selecting logs analyzed by the job.", - "items": { - "description": "Query for selecting logs analyzed by the historical job.", - "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" - }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Name of the query.", - "type": "string" - }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "referenceTables": { - "description": "Reference tables used in the queries.", - "items": { - "description": "Reference tables used in the queries.", - "properties": { - "checkPresence": { - "description": "Whether to include or exclude the matched values.", - "type": "boolean" - }, - "columnName": { - "description": "The name of the column in the reference table.", - "type": "string" - }, - "logFieldPath": { - "description": "The field in the log to match against the reference table.", - "type": "string" - }, - "ruleQueryName": { - "description": "The name of the query to apply the reference table to.", - "type": "string" - }, - "tableName": { - "description": "The name of the reference table.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tags": { - "description": "Tags for generated signals.", - "items": { - "type": "string" - }, - "type": "array" - }, - "thirdPartyCases": { - "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", - "example": [], - "items": { - "description": "Case when a signal is generated by a third party rule.", - "properties": { - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets for each case.", - "items": { - "description": "Notification.", - "type": "string" + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } }, - "type": "array" + "type": "object" }, - "query": { - "description": "A query to map a third party event to this case.", + "id": { + "description": "The unique identifier of the IP allowlist entry.", "type": "string" }, - "status": { - "description": "Severity of the Security Signal.", + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", "enum": [ - "info", - "low", - "medium", - "high", - "critical" + "ip_allowlist_entry" ], - "example": "critical", + "example": "ip_allowlist_entry", "type": "string", "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" + "IP_ALLOWLIST_ENTRY" ] } }, "required": [ - "status" + "type" ], "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Ending time of data analyzed by the job.", - "example": 1729847070000, - "format": "int64", - "type": "integer" + } }, - "type": { - "description": "Job type.", - "type": "string" - } + "required": [ + "data" + ], + "type": "object" }, - "required": [ - "from", - "to", - "index", - "name", - "cases", - "queries", - "message" - ], - "type": "object" - }, - "jobName": { - "description": "Job name.", - "type": "string" - }, - "jobStatus": { - "description": "Job status.", - "type": "string" - }, - "modifiedAt": { - "description": "Last modification time of the job.", - "type": "string" + "type": "array" } }, "type": "object" }, "id": { - "description": "ID of the job.", + "description": "The unique identifier of the org.", "type": "string" }, "type": { - "description": "Type of payload.", + "default": "ip_allowlist", + "description": "IP allowlist type.", "enum": [ - "historicalDetectionsJob" + "ip_allowlist" ], + "example": "ip_allowlist", "type": "string", "x-enum-varnames": [ - "HISTORICALDETECTIONSJOB" + "IP_ALLOWLIST" ] } }, + "required": [ + "type" + ], "type": "object" } }, + "required": [ + "data" + ], "type": "object" }, - "HistoricalJobResponseAttributes": { - "description": "Historical job attributes.", + "IdPMetadataFormData": { + "description": "The form data submitted to upload IdP metadata", "properties": { - "createdAt": { - "description": "Time when the job was created.", - "type": "string" - }, - "createdByHandle": { - "description": "The handle of the user who created the job.", - "type": "string" - }, - "createdByName": { - "description": "The name of the user who created the job.", - "type": "string" - }, - "createdFromRuleId": { - "description": "ID of the rule used to create the job (if it is created from a rule).", - "type": "string" + "idp_file": { + "description": "The IdP metadata XML file", + "format": "binary", + "type": "string", + "x-mimetype": "application/xml" + } + }, + "type": "object" + }, + "IncidentAttachmentAttachmentType": { + "description": "The type of the incident attachment attributes.", + "enum": [ + "link", + "postmortem" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK", + "POSTMORTEM" + ] + }, + "IncidentAttachmentAttributes": { + "description": "The attributes object for an attachment.", + "oneOf": [ + { + "description": "The attributes object for a postmortem attachment.", + "properties": { + "attachment": { + "description": "The postmortem attachment.", + "properties": { + "documentUrl": { + "description": "The URL of this notebook attachment.", + "example": "https://app.datadoghq.com/notebook/123", + "type": "string" + }, + "title": { + "description": "The title of this postmortem attachment.", + "example": "Postmortem IR-123", + "type": "string" + } + }, + "required": [ + "documentUrl", + "title" + ], + "type": "object" + }, + "attachment_type": { + "default": "postmortem", + "description": "The type of postmortem attachment attributes.", + "enum": [ + "postmortem" + ], + "example": "postmortem", + "type": "string", + "x-enum-varnames": [ + "POSTMORTEM" + ] + } + }, + "required": [ + "attachment_type", + "attachment" + ], + "type": "object" }, - "jobDefinition": { - "description": "Definition of a historical job.", + { + "description": "The attributes object for a link attachment.", "properties": { - "calculatedFields": { - "description": "Calculated fields.", - "items": { - "description": "Calculated field.", - "properties": { - "expression": { - "description": "Expression.", - "example": "@request_end_timestamp - @request_start_timestamp", - "type": "string" - }, - "name": { - "description": "Field name.", - "example": "response_time", - "type": "string" - } + "attachment": { + "description": "The link attachment.", + "properties": { + "documentUrl": { + "description": "The URL of this link attachment.", + "example": "https://www.example.com/webstore-failure-runbook", + "type": "string" }, - "required": [ - "name", - "expression" - ], - "type": "object" + "title": { + "description": "The title of this link attachment.", + "example": "Runbook for webstore service failures", + "type": "string" + } }, - "type": "array" - }, - "cases": { - "description": "Cases used for generating job results.", - "items": { - "description": "Case when signal is generated.", - "properties": { - "actions": { - "description": "Action to perform for each rule case.", - "items": { - "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", - "properties": { - "options": { - "additionalProperties": {}, - "description": "Options for the rule action", - "properties": { - "duration": { - "description": "Duration of the action in seconds. 0 indicates no expiration.", - "example": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "flaggedIPType": { - "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", - "enum": [ - "SUSPICIOUS", - "FLAGGED" - ], - "example": "FLAGGED", - "type": "string", - "x-enum-varnames": [ - "SUSPICIOUS", - "FLAGGED" - ] - }, - "userBehaviorName": { - "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "description": "The action type.", - "enum": [ - "block_ip", - "block_user", - "user_behavior", - "flag_ip" - ], - "type": "string", - "x-enum-varnames": [ - "BLOCK_IP", - "BLOCK_USER", - "USER_BEHAVIOR", - "FLAG_IP" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "condition": { - "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", - "type": "string" - }, - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "from": { - "description": "Starting time of data analyzed by the job.", - "example": 1729843470000, - "format": "int64", - "type": "integer" - }, - "groupSignalsBy": { - "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", - "example": [ - "service" - ], - "items": { - "description": "Field to group by.", - "type": "string" - }, - "type": "array" - }, - "index": { - "description": "Index used to load the data.", - "example": "cloud_siem", - "type": "string" - }, - "message": { - "description": "Message for generated results.", - "example": "A large number of failed login attempts.", - "type": "string" - }, - "name": { - "description": "Job name.", - "example": "Excessive number of failed attempts.", - "type": "string" - }, - "options": { - "description": "Job options.", - "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", - "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] - }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } - }, - "type": "object" - }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", - "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", - "properties": { - "child": { - "description": "Name of the child step.", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "parent": { - "description": "Name of the parent step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", - "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", - "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "defaultStatus": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "queries": { - "description": "Queries for selecting logs analyzed by the job.", - "items": { - "description": "Query for selecting logs analyzed by the historical job.", - "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" - }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Name of the query.", - "type": "string" - }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "referenceTables": { - "description": "Reference tables used in the queries.", - "items": { - "description": "Reference tables used in the queries.", - "properties": { - "checkPresence": { - "description": "Whether to include or exclude the matched values.", - "type": "boolean" - }, - "columnName": { - "description": "The name of the column in the reference table.", - "type": "string" - }, - "logFieldPath": { - "description": "The field in the log to match against the reference table.", - "type": "string" - }, - "ruleQueryName": { - "description": "The name of the query to apply the reference table to.", - "type": "string" - }, - "tableName": { - "description": "The name of the reference table.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tags": { - "description": "Tags for generated signals.", - "items": { - "type": "string" - }, - "type": "array" - }, - "thirdPartyCases": { - "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", - "example": [], - "items": { - "description": "Case when a signal is generated by a third party rule.", - "properties": { - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets for each case.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "A query to map a third party event to this case.", - "type": "string" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Ending time of data analyzed by the job.", - "example": 1729847070000, - "format": "int64", - "type": "integer" - }, - "type": { - "description": "Job type.", - "type": "string" - } - }, - "required": [ - "from", - "to", - "index", - "name", - "cases", - "queries", - "message" - ], - "type": "object" - }, - "jobName": { - "description": "Job name.", - "type": "string" - }, - "jobStatus": { - "description": "Job status.", - "type": "string" - }, - "modifiedAt": { - "description": "Last modification time of the job.", - "type": "string" - } - }, - "type": "object" - }, - "HistoricalJobResponseData": { - "description": "Historical job response data.", - "properties": { - "attributes": { - "description": "Historical job attributes.", - "properties": { - "createdAt": { - "description": "Time when the job was created.", - "type": "string" - }, - "createdByHandle": { - "description": "The handle of the user who created the job.", - "type": "string" - }, - "createdByName": { - "description": "The name of the user who created the job.", - "type": "string" - }, - "createdFromRuleId": { - "description": "ID of the rule used to create the job (if it is created from a rule).", - "type": "string" - }, - "jobDefinition": { - "description": "Definition of a historical job.", - "properties": { - "calculatedFields": { - "description": "Calculated fields.", - "items": { - "description": "Calculated field.", - "properties": { - "expression": { - "description": "Expression.", - "example": "@request_end_timestamp - @request_start_timestamp", - "type": "string" - }, - "name": { - "description": "Field name.", - "example": "response_time", - "type": "string" - } - }, - "required": [ - "name", - "expression" - ], - "type": "object" - }, - "type": "array" - }, - "cases": { - "description": "Cases used for generating job results.", - "items": { - "description": "Case when signal is generated.", - "properties": { - "actions": { - "description": "Action to perform for each rule case.", - "items": { - "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", - "properties": { - "options": { - "additionalProperties": {}, - "description": "Options for the rule action", - "properties": { - "duration": { - "description": "Duration of the action in seconds. 0 indicates no expiration.", - "example": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "flaggedIPType": { - "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", - "enum": [ - "SUSPICIOUS", - "FLAGGED" - ], - "example": "FLAGGED", - "type": "string", - "x-enum-varnames": [ - "SUSPICIOUS", - "FLAGGED" - ] - }, - "userBehaviorName": { - "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "description": "The action type.", - "enum": [ - "block_ip", - "block_user", - "user_behavior", - "flag_ip" - ], - "type": "string", - "x-enum-varnames": [ - "BLOCK_IP", - "BLOCK_USER", - "USER_BEHAVIOR", - "FLAG_IP" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "condition": { - "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", - "type": "string" - }, - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "from": { - "description": "Starting time of data analyzed by the job.", - "example": 1729843470000, - "format": "int64", - "type": "integer" - }, - "groupSignalsBy": { - "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", - "example": [ - "service" - ], - "items": { - "description": "Field to group by.", - "type": "string" - }, - "type": "array" - }, - "index": { - "description": "Index used to load the data.", - "example": "cloud_siem", - "type": "string" - }, - "message": { - "description": "Message for generated results.", - "example": "A large number of failed login attempts.", - "type": "string" - }, - "name": { - "description": "Job name.", - "example": "Excessive number of failed attempts.", - "type": "string" - }, - "options": { - "description": "Job options.", - "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", - "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] - }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } - }, - "type": "object" - }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", - "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", - "properties": { - "child": { - "description": "Name of the child step.", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "parent": { - "description": "Name of the parent step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", - "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", - "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "defaultStatus": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "queries": { - "description": "Queries for selecting logs analyzed by the job.", - "items": { - "description": "Query for selecting logs analyzed by the historical job.", - "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" - }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Name of the query.", - "type": "string" - }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "referenceTables": { - "description": "Reference tables used in the queries.", - "items": { - "description": "Reference tables used in the queries.", - "properties": { - "checkPresence": { - "description": "Whether to include or exclude the matched values.", - "type": "boolean" - }, - "columnName": { - "description": "The name of the column in the reference table.", - "type": "string" - }, - "logFieldPath": { - "description": "The field in the log to match against the reference table.", - "type": "string" - }, - "ruleQueryName": { - "description": "The name of the query to apply the reference table to.", - "type": "string" - }, - "tableName": { - "description": "The name of the reference table.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tags": { - "description": "Tags for generated signals.", - "items": { - "type": "string" - }, - "type": "array" - }, - "thirdPartyCases": { - "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", - "example": [], - "items": { - "description": "Case when a signal is generated by a third party rule.", - "properties": { - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets for each case.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "A query to map a third party event to this case.", - "type": "string" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Ending time of data analyzed by the job.", - "example": 1729847070000, - "format": "int64", - "type": "integer" - }, - "type": { - "description": "Job type.", - "type": "string" - } - }, - "required": [ - "from", - "to", - "index", - "name", - "cases", - "queries", - "message" - ], - "type": "object" - }, - "jobName": { - "description": "Job name.", - "type": "string" - }, - "jobStatus": { - "description": "Job status.", - "type": "string" - }, - "modifiedAt": { - "description": "Last modification time of the job.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the job.", - "type": "string" - }, - "type": { - "description": "Type of payload.", - "enum": [ - "historicalDetectionsJob" - ], - "type": "string", - "x-enum-varnames": [ - "HISTORICALDETECTIONSJOB" - ] - } - }, - "type": "object" - }, - "HourlyUsage": { - "description": "Hourly usage for a product family for an org.", - "properties": { - "attributes": { - "description": "Attributes of hourly usage for a product family for an org for a time period.", - "properties": { - "account_name": { - "description": "The account name.", - "type": "string" - }, - "account_public_id": { - "description": "The account public ID.", - "type": "string" - }, - "measurements": { - "description": "List of the measured usage values for the product family for the org for the time period.", - "items": { - "description": "Usage amount for a given usage type.", - "properties": { - "usage_type": { - "description": "Type of usage.", - "type": "string" - }, - "value": { - "description": "Contains the number measured for the given usage_type during the hour.", - "format": "int64", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "org_name": { - "description": "The organization name.", - "type": "string" - }, - "product_family": { - "description": "The product for which usage is being reported.", - "type": "string" - }, - "public_id": { - "description": "The organization public ID.", - "type": "string" - }, - "region": { - "description": "The region of the Datadog instance that the organization belongs to.", - "type": "string" - }, - "timestamp": { - "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "Unique ID of the response.", - "type": "string" - }, - "type": { - "default": "usage_timeseries", - "description": "Type of usage data.", - "enum": [ - "usage_timeseries" - ], - "example": "usage_timeseries", - "type": "string", - "x-enum-varnames": [ - "USAGE_TIMESERIES" - ] - } - }, - "type": "object" - }, - "HourlyUsageAttributes": { - "description": "Attributes of hourly usage for a product family for an org for a time period.", - "properties": { - "account_name": { - "description": "The account name.", - "type": "string" - }, - "account_public_id": { - "description": "The account public ID.", - "type": "string" - }, - "measurements": { - "description": "List of the measured usage values for the product family for the org for the time period.", - "items": { - "description": "Usage amount for a given usage type.", - "properties": { - "usage_type": { - "description": "Type of usage.", - "type": "string" - }, - "value": { - "description": "Contains the number measured for the given usage_type during the hour.", - "format": "int64", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "org_name": { - "description": "The organization name.", - "type": "string" - }, - "product_family": { - "description": "The product for which usage is being reported.", - "type": "string" - }, - "public_id": { - "description": "The organization public ID.", - "type": "string" - }, - "region": { - "description": "The region of the Datadog instance that the organization belongs to.", - "type": "string" - }, - "timestamp": { - "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "HourlyUsageMeasurement": { - "description": "Usage amount for a given usage type.", - "properties": { - "usage_type": { - "description": "Type of usage.", - "type": "string" - }, - "value": { - "description": "Contains the number measured for the given usage_type during the hour.", - "format": "int64", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "HourlyUsageMetadata": { - "description": "The object containing document metadata.", - "properties": { - "pagination": { - "description": "The metadata for the current pagination.", - "properties": { - "next_record_id": { - "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", - "nullable": true, - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "HourlyUsagePagination": { - "description": "The metadata for the current pagination.", - "properties": { - "next_record_id": { - "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", - "nullable": true, - "type": "string" - } - }, - "type": "object" - }, - "HourlyUsageResponse": { - "description": "Hourly usage response.", - "properties": { - "data": { - "description": "Response containing hourly usage.", - "items": { - "description": "Hourly usage for a product family for an org.", - "properties": { - "attributes": { - "description": "Attributes of hourly usage for a product family for an org for a time period.", - "properties": { - "account_name": { - "description": "The account name.", - "type": "string" - }, - "account_public_id": { - "description": "The account public ID.", - "type": "string" - }, - "measurements": { - "description": "List of the measured usage values for the product family for the org for the time period.", - "items": { - "description": "Usage amount for a given usage type.", - "properties": { - "usage_type": { - "description": "Type of usage.", - "type": "string" - }, - "value": { - "description": "Contains the number measured for the given usage_type during the hour.", - "format": "int64", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "org_name": { - "description": "The organization name.", - "type": "string" - }, - "product_family": { - "description": "The product for which usage is being reported.", - "type": "string" - }, - "public_id": { - "description": "The organization public ID.", - "type": "string" - }, - "region": { - "description": "The region of the Datadog instance that the organization belongs to.", - "type": "string" - }, - "timestamp": { - "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "Unique ID of the response.", - "type": "string" - }, - "type": { - "default": "usage_timeseries", - "description": "Type of usage data.", - "enum": [ - "usage_timeseries" - ], - "example": "usage_timeseries", - "type": "string", - "x-enum-varnames": [ - "USAGE_TIMESERIES" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "meta": { - "description": "The object containing document metadata.", - "properties": { - "pagination": { - "description": "The metadata for the current pagination.", - "properties": { - "next_record_id": { - "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", - "nullable": true, - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "HourlyUsageType": { - "description": "Usage type that is being measured.", - "enum": [ - "app_sec_host_count", - "observability_pipelines_bytes_processed", - "lambda_traced_invocations_count" - ], - "example": "observability_pipelines_bytes_processed", - "type": "string", - "x-enum-varnames": [ - "APP_SEC_HOST_COUNT", - "OBSERVABILITY_PIPELINES_BYTES_PROCESSSED", - "LAMBDA_TRACED_INVOCATIONS_COUNT" - ] - }, - "ID": { - "description": "The ID of a notification rule.", - "example": "aaa-bbb-ccc", - "type": "string" - }, - "IPAllowlistAttributes": { - "description": "Attributes of the IP allowlist.", - "properties": { - "enabled": { - "description": "Whether the IP allowlist logic is enabled or not.", - "type": "boolean" - }, - "entries": { - "description": "Array of entries in the IP allowlist.", - "items": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "IPAllowlistData": { - "description": "IP allowlist data.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist.", - "properties": { - "enabled": { - "description": "Whether the IP allowlist logic is enabled or not.", - "type": "boolean" - }, - "entries": { - "description": "Array of entries in the IP allowlist.", - "items": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the org.", - "type": "string" - }, - "type": { - "default": "ip_allowlist", - "description": "IP allowlist type.", - "enum": [ - "ip_allowlist" - ], - "example": "ip_allowlist", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - }, - "IPAllowlistEntry": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "IPAllowlistEntryAttributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "IPAllowlistEntryData": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - }, - "IPAllowlistEntryType": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - }, - "IPAllowlistResponse": { - "description": "Response containing information about the IP allowlist.", - "properties": { - "data": { - "description": "IP allowlist data.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist.", - "properties": { - "enabled": { - "description": "Whether the IP allowlist logic is enabled or not.", - "type": "boolean" - }, - "entries": { - "description": "Array of entries in the IP allowlist.", - "items": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the org.", - "type": "string" - }, - "type": { - "default": "ip_allowlist", - "description": "IP allowlist type.", - "enum": [ - "ip_allowlist" - ], - "example": "ip_allowlist", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "type": "object" - }, - "IPAllowlistType": { - "default": "ip_allowlist", - "description": "IP allowlist type.", - "enum": [ - "ip_allowlist" - ], - "example": "ip_allowlist", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST" - ] - }, - "IPAllowlistUpdateRequest": { - "description": "Update the IP allowlist.", - "properties": { - "data": { - "description": "IP allowlist data.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist.", - "properties": { - "enabled": { - "description": "Whether the IP allowlist logic is enabled or not.", - "type": "boolean" - }, - "entries": { - "description": "Array of entries in the IP allowlist.", - "items": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the org.", - "type": "string" - }, - "type": { - "default": "ip_allowlist", - "description": "IP allowlist type.", - "enum": [ - "ip_allowlist" - ], - "example": "ip_allowlist", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "IdPMetadataFormData": { - "description": "The form data submitted to upload IdP metadata", - "properties": { - "idp_file": { - "description": "The IdP metadata XML file", - "format": "binary", - "type": "string", - "x-mimetype": "application/xml" - } - }, - "type": "object" - }, - "IncidentAttachmentAttachmentType": { - "description": "The type of the incident attachment attributes.", - "enum": [ - "link", - "postmortem" - ], - "example": "link", - "type": "string", - "x-enum-varnames": [ - "LINK", - "POSTMORTEM" - ] - }, - "IncidentAttachmentAttributes": { - "description": "The attributes object for an attachment.", - "oneOf": [ - { - "description": "The attributes object for a postmortem attachment.", - "properties": { - "attachment": { - "description": "The postmortem attachment.", - "properties": { - "documentUrl": { - "description": "The URL of this notebook attachment.", - "example": "https://app.datadoghq.com/notebook/123", - "type": "string" - }, - "title": { - "description": "The title of this postmortem attachment.", - "example": "Postmortem IR-123", - "type": "string" - } - }, - "required": [ - "documentUrl", - "title" - ], - "type": "object" - }, - "attachment_type": { - "default": "postmortem", - "description": "The type of postmortem attachment attributes.", - "enum": [ - "postmortem" - ], - "example": "postmortem", - "type": "string", - "x-enum-varnames": [ - "POSTMORTEM" - ] - } - }, - "required": [ - "attachment_type", - "attachment" - ], - "type": "object" - }, - { - "description": "The attributes object for a link attachment.", - "properties": { - "attachment": { - "description": "The link attachment.", - "properties": { - "documentUrl": { - "description": "The URL of this link attachment.", - "example": "https://www.example.com/webstore-failure-runbook", - "type": "string" - }, - "title": { - "description": "The title of this link attachment.", - "example": "Runbook for webstore service failures", - "type": "string" - } - }, - "required": [ - "documentUrl", - "title" - ], - "type": "object" + "required": [ + "documentUrl", + "title" + ], + "type": "object" }, "attachment_type": { "default": "link", @@ -181807,7 +178925,7 @@ "type": "object" }, "JobCreateResponse": { - "description": "Run a historical job response.", + "description": "Run a threat hunting job response.", "properties": { "data": { "description": "The definition of `JobCreateResponseData` object.", @@ -181853,7 +178971,7 @@ "type": "object" }, "JobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -182397,7 +179515,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -182600,7 +179718,7 @@ "type": "object" }, "JobDefinitionFromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -193561,829 +190679,6 @@ ], "type": "object" }, - "ListHistoricalJobsResponse": { - "description": "List of historical jobs.", - "properties": { - "data": { - "description": "Array containing the list of historical jobs.", - "items": { - "description": "Historical job response data.", - "properties": { - "attributes": { - "description": "Historical job attributes.", - "properties": { - "createdAt": { - "description": "Time when the job was created.", - "type": "string" - }, - "createdByHandle": { - "description": "The handle of the user who created the job.", - "type": "string" - }, - "createdByName": { - "description": "The name of the user who created the job.", - "type": "string" - }, - "createdFromRuleId": { - "description": "ID of the rule used to create the job (if it is created from a rule).", - "type": "string" - }, - "jobDefinition": { - "description": "Definition of a historical job.", - "properties": { - "calculatedFields": { - "description": "Calculated fields.", - "items": { - "description": "Calculated field.", - "properties": { - "expression": { - "description": "Expression.", - "example": "@request_end_timestamp - @request_start_timestamp", - "type": "string" - }, - "name": { - "description": "Field name.", - "example": "response_time", - "type": "string" - } - }, - "required": [ - "name", - "expression" - ], - "type": "object" - }, - "type": "array" - }, - "cases": { - "description": "Cases used for generating job results.", - "items": { - "description": "Case when signal is generated.", - "properties": { - "actions": { - "description": "Action to perform for each rule case.", - "items": { - "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", - "properties": { - "options": { - "additionalProperties": {}, - "description": "Options for the rule action", - "properties": { - "duration": { - "description": "Duration of the action in seconds. 0 indicates no expiration.", - "example": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "flaggedIPType": { - "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", - "enum": [ - "SUSPICIOUS", - "FLAGGED" - ], - "example": "FLAGGED", - "type": "string", - "x-enum-varnames": [ - "SUSPICIOUS", - "FLAGGED" - ] - }, - "userBehaviorName": { - "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "description": "The action type.", - "enum": [ - "block_ip", - "block_user", - "user_behavior", - "flag_ip" - ], - "type": "string", - "x-enum-varnames": [ - "BLOCK_IP", - "BLOCK_USER", - "USER_BEHAVIOR", - "FLAG_IP" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "condition": { - "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", - "type": "string" - }, - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "from": { - "description": "Starting time of data analyzed by the job.", - "example": 1729843470000, - "format": "int64", - "type": "integer" - }, - "groupSignalsBy": { - "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", - "example": [ - "service" - ], - "items": { - "description": "Field to group by.", - "type": "string" - }, - "type": "array" - }, - "index": { - "description": "Index used to load the data.", - "example": "cloud_siem", - "type": "string" - }, - "message": { - "description": "Message for generated results.", - "example": "A large number of failed login attempts.", - "type": "string" - }, - "name": { - "description": "Job name.", - "example": "Excessive number of failed attempts.", - "type": "string" - }, - "options": { - "description": "Job options.", - "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", - "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] - }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } - }, - "type": "object" - }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", - "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", - "properties": { - "child": { - "description": "Name of the child step.", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "parent": { - "description": "Name of the parent step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", - "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", - "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "defaultStatus": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "queries": { - "description": "Queries for selecting logs analyzed by the job.", - "items": { - "description": "Query for selecting logs analyzed by the historical job.", - "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" - }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Name of the query.", - "type": "string" - }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "referenceTables": { - "description": "Reference tables used in the queries.", - "items": { - "description": "Reference tables used in the queries.", - "properties": { - "checkPresence": { - "description": "Whether to include or exclude the matched values.", - "type": "boolean" - }, - "columnName": { - "description": "The name of the column in the reference table.", - "type": "string" - }, - "logFieldPath": { - "description": "The field in the log to match against the reference table.", - "type": "string" - }, - "ruleQueryName": { - "description": "The name of the query to apply the reference table to.", - "type": "string" - }, - "tableName": { - "description": "The name of the reference table.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tags": { - "description": "Tags for generated signals.", - "items": { - "type": "string" - }, - "type": "array" - }, - "thirdPartyCases": { - "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", - "example": [], - "items": { - "description": "Case when a signal is generated by a third party rule.", - "properties": { - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets for each case.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "A query to map a third party event to this case.", - "type": "string" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Ending time of data analyzed by the job.", - "example": 1729847070000, - "format": "int64", - "type": "integer" - }, - "type": { - "description": "Job type.", - "type": "string" - } - }, - "required": [ - "from", - "to", - "index", - "name", - "cases", - "queries", - "message" - ], - "type": "object" - }, - "jobName": { - "description": "Job name.", - "type": "string" - }, - "jobStatus": { - "description": "Job status.", - "type": "string" - }, - "modifiedAt": { - "description": "Last modification time of the job.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the job.", - "type": "string" - }, - "type": { - "description": "Type of payload.", - "enum": [ - "historicalDetectionsJob" - ], - "type": "string", - "x-enum-varnames": [ - "HISTORICALDETECTIONSJOB" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "meta": { - "description": "Metadata about the list of jobs.", - "properties": { - "totalCount": { - "description": "Number of jobs in the list.", - "format": "int32", - "maximum": 2147483647, - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, "ListKindCatalogResponse": { "description": "List kind response.", "properties": { @@ -201096,6 +197391,829 @@ "_USER_COUNT" ] }, + "ListThreatHuntingJobsResponse": { + "description": "List of threat hunting jobs.", + "properties": { + "data": { + "description": "Array containing the list of threat hunting jobs.", + "items": { + "description": "Threat hunting job response data.", + "properties": { + "attributes": { + "description": "Threat hunting job attributes.", + "properties": { + "createdAt": { + "description": "Time when the job was created.", + "type": "string" + }, + "createdByHandle": { + "description": "The handle of the user who created the job.", + "type": "string" + }, + "createdByName": { + "description": "The name of the user who created the job.", + "type": "string" + }, + "createdFromRuleId": { + "description": "ID of the rule used to create the job (if it is created from a rule).", + "type": "string" + }, + "jobDefinition": { + "description": "Definition of a threat hunting job.", + "properties": { + "calculatedFields": { + "description": "Calculated fields.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string" + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string" + } + }, + "required": [ + "name", + "expression" + ], + "type": "object" + }, + "type": "array" + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration of the action in seconds. 0 indicates no expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "flaggedIPType": { + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED" + ] + }, + "userBehaviorName": { + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "condition": { + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", + "type": "string" + }, + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "type": "array" + }, + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer" + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", + "example": [ + "service" + ], + "items": { + "description": "Field to group by.", + "type": "string" + }, + "type": "array" + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string" + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string" + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string" + }, + "options": { + "description": "Job options.", + "properties": { + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", + "enum": [ + 1, + 2, + 7, + 14, + 21, + 28 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" + ] + }, + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", + "enum": [ + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" + ], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" + ] + } + }, + "type": "object" + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", + "items": { + "description": "Transition from a parent step to a child step within a sequence detection rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "queries": { + "description": "Queries for selecting logs analyzed by the job.", + "items": { + "description": "Query for selecting logs analyzed by the threat hunting job.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] + }, + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" + ] + }, + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" + }, + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the query.", + "type": "string" + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean" + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string" + }, + "logFieldPath": { + "description": "The field in the log to match against the reference table.", + "type": "string" + }, + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", + "type": "string" + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tags": { + "description": "Tags for generated signals.", + "items": { + "type": "string" + }, + "type": "array" + }, + "thirdPartyCases": { + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets for each case.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Job type.", + "type": "string" + } + }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message" + ], + "type": "object" + }, + "jobName": { + "description": "Job name.", + "type": "string" + }, + "jobStatus": { + "description": "Job status.", + "type": "string" + }, + "modifiedAt": { + "description": "Last modification time of the job.", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the job.", + "type": "string" + }, + "type": { + "description": "Type of payload.", + "enum": [ + "historicalDetectionsJob" + ], + "type": "string", + "x-enum-varnames": [ + "HISTORICALDETECTIONSJOB" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Metadata about the list of jobs.", + "properties": { + "totalCount": { + "description": "Number of jobs in the list.", + "format": "int32", + "maximum": 2147483647, + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, "ListVulnerabilitiesResponse": { "description": "The expected response schema when listing vulnerabilities.", "properties": { @@ -295607,17 +292725,22 @@ }, "type": "object" }, - "RunHistoricalJobRequest": { - "description": "Run a historical job request.", + "RunRetentionFilterName": { + "description": "The name of a RUM retention filter.", + "example": "Retention filter for session", + "type": "string" + }, + "RunThreatHuntingJobRequest": { + "description": "Run a threat hunting job request.", "properties": { "data": { - "description": "Data for running a historical job request.", + "description": "Data for running a threat hunting job request.", "properties": { "attributes": { - "description": "Run a historical job request.", + "description": "Run a threat hunting job request.", "properties": { "fromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -295665,7 +292788,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -296209,7 +293332,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -296430,11 +293553,11 @@ }, "type": "object" }, - "RunHistoricalJobRequestAttributes": { - "description": "Run a historical job request.", + "RunThreatHuntingJobRequestAttributes": { + "description": "Run a threat hunting job request.", "properties": { "fromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -296482,7 +293605,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -297026,7 +294149,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -297231,14 +294354,14 @@ }, "type": "object" }, - "RunHistoricalJobRequestData": { - "description": "Data for running a historical job request.", + "RunThreatHuntingJobRequestData": { + "description": "Data for running a threat hunting job request.", "properties": { "attributes": { - "description": "Run a historical job request.", + "description": "Run a threat hunting job request.", "properties": { "fromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -297286,7 +294409,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -297830,7 +294953,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -298048,7 +295171,7 @@ }, "type": "object" }, - "RunHistoricalJobRequestDataType": { + "RunThreatHuntingJobRequestDataType": { "description": "Type of data.", "enum": [ "historicalDetectionsJobCreate" @@ -298058,11 +295181,6 @@ "HISTORICALDETECTIONSJOBCREATE" ] }, - "RunRetentionFilterName": { - "description": "The name of a RUM retention filter.", - "example": "Retention filter for session", - "type": "string" - }, "SAMLAssertionAttribute": { "description": "SAML assertion attribute.", "properties": { @@ -360124,48 +357242,1369 @@ } }, "required": [ - "type", - "channel", - "workspace" + "type", + "channel", + "workspace" + ], + "type": "object" + }, + { + "description": "Sends a message to a Microsoft Teams channel.", + "properties": { + "channel": { + "description": "The channel ID.", + "example": "CHANNEL", + "type": "string" + }, + "team": { + "description": "The team ID.", + "example": "TEAM", + "type": "string" + }, + "tenant": { + "description": "The tenant ID.", + "example": "TENANT", + "type": "string" + }, + "type": { + "default": "send_teams_message", + "description": "Indicates that the action is a send Microsoft Teams message action.", + "enum": [ + "send_teams_message" + ], + "example": "send_teams_message", + "type": "string", + "x-enum-varnames": [ + "SEND_TEAMS_MESSAGE" + ] + } + }, + "required": [ + "type", + "channel", + "tenant", + "team" + ], + "type": "object" + } + ] + }, + "type": "array" + }, + "policy_id": { + "description": "Identifies the policy to be applied when this routing rule matches.", + "type": "string" + }, + "query": { + "description": "Defines the query or condition that triggers this routing rule.", + "type": "string" + }, + "time_restriction": { + "description": "Holds time zone information and a list of time restrictions for a routing rule.", + "properties": { + "restrictions": { + "description": "Defines the list of time-based restrictions.", + "items": { + "description": "Defines a single time restriction rule with start and end times and the applicable weekdays.", + "properties": { + "end_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ] + }, + "end_time": { + "description": "Specifies the ending time for this restriction.", + "type": "string" + }, + "start_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ] + }, + "start_time": { + "description": "Specifies the starting time for this restriction.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "time_zone": { + "description": "Specifies the time zone applicable to the restrictions.", + "example": "", + "type": "string" + } + }, + "required": [ + "time_zone", + "restrictions" + ], + "type": "object" + }, + "urgency": { + "description": "Specifies the level of urgency for a routing rule (low, high, or dynamic).", + "enum": [ + "low", + "high", + "dynamic" + ], + "example": "low", + "type": "string", + "x-enum-varnames": [ + "LOW", + "HIGH", + "DYNAMIC" + ] + } + }, + "type": "object" + }, + "TeamSyncAttributes": { + "description": "Team sync attributes.", + "properties": { + "source": { + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "enum": [ + "github" + ], + "example": "github", + "type": "string", + "x-enum-varnames": [ + "GITHUB" + ] + }, + "type": { + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "enum": [ + "link" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK" + ] + } + }, + "required": [ + "source", + "type" + ], + "type": "object" + }, + "TeamSyncAttributesSource": { + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "enum": [ + "github" + ], + "example": "github", + "type": "string", + "x-enum-varnames": [ + "GITHUB" + ] + }, + "TeamSyncAttributesType": { + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "enum": [ + "link" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK" + ] + }, + "TeamSyncBulkType": { + "description": "Team sync bulk type.", + "enum": [ + "team_sync_bulk" + ], + "example": "team_sync_bulk", + "type": "string", + "x-enum-varnames": [ + "TEAM_SYNC_BULK" + ] + }, + "TeamSyncData": { + "description": "Team sync data.", + "properties": { + "attributes": { + "description": "Team sync attributes.", + "properties": { + "source": { + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "enum": [ + "github" + ], + "example": "github", + "type": "string", + "x-enum-varnames": [ + "GITHUB" + ] + }, + "type": { + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "enum": [ + "link" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK" + ] + } + }, + "required": [ + "source", + "type" + ], + "type": "object" + }, + "type": { + "description": "Team sync bulk type.", + "enum": [ + "team_sync_bulk" + ], + "example": "team_sync_bulk", + "type": "string", + "x-enum-varnames": [ + "TEAM_SYNC_BULK" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + }, + "TeamSyncRequest": { + "description": "Team sync request.", + "example": { + "data": { + "attributes": { + "source": "github", + "type": "link" + }, + "type": "team_sync_bulk" + } + }, + "properties": { + "data": { + "description": "Team sync data.", + "properties": { + "attributes": { + "description": "Team sync attributes.", + "properties": { + "source": { + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "enum": [ + "github" + ], + "example": "github", + "type": "string", + "x-enum-varnames": [ + "GITHUB" + ] + }, + "type": { + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "enum": [ + "link" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK" + ] + } + }, + "required": [ + "source", + "type" + ], + "type": "object" + }, + "type": { + "description": "Team sync bulk type.", + "enum": [ + "team_sync_bulk" + ], + "example": "team_sync_bulk", + "type": "string", + "x-enum-varnames": [ + "TEAM_SYNC_BULK" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "TeamTarget": { + "description": "Represents a team target for an escalation policy step, including the team's ID and resource type.", + "properties": { + "id": { + "description": "Specifies the unique identifier of the team resource.", + "example": "00000000-aba1-0000-0000-000000000000", + "type": "string" + }, + "type": { + "default": "teams", + "description": "Indicates that the resource is of type `teams`.", + "enum": [ + "teams" + ], + "example": "teams", + "type": "string", + "x-enum-varnames": [ + "TEAMS" + ] + } + }, + "required": [ + "type", + "id" + ], + "type": "object" + }, + "TeamTargetType": { + "default": "teams", + "description": "Indicates that the resource is of type `teams`.", + "enum": [ + "teams" + ], + "example": "teams", + "type": "string", + "x-enum-varnames": [ + "TEAMS" + ] + }, + "TeamType": { + "default": "team", + "description": "Team type", + "enum": [ + "team" + ], + "example": "team", + "type": "string", + "x-enum-varnames": [ + "TEAM" + ] + }, + "TeamUpdate": { + "description": "Team update request", + "properties": { + "attributes": { + "description": "Team update attributes", + "properties": { + "avatar": { + "description": "Unicode representation of the avatar for the team, limited to a single grapheme", + "example": "🥑", + "nullable": true, + "type": "string" + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": true, + "type": "integer" + }, + "description": { + "description": "Free-form markdown description/content for the team's homepage", + "type": "string" + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string" + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string" + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "relationships": { + "description": "Team update relationships", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "team", + "description": "Team type", + "enum": [ + "team" + ], + "example": "team", + "type": "string", + "x-enum-varnames": [ + "TEAM" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + }, + "TeamUpdateAttributes": { + "description": "Team update attributes", + "properties": { + "avatar": { + "description": "Unicode representation of the avatar for the team, limited to a single grapheme", + "example": "🥑", + "nullable": true, + "type": "string" + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": true, + "type": "integer" + }, + "description": { + "description": "Free-form markdown description/content for the team's homepage", + "type": "string" + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string" + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string" + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "TeamUpdateRelationships": { + "description": "Team update relationships", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "TeamUpdateRequest": { + "description": "Team update request", + "properties": { + "data": { + "description": "Team update request", + "properties": { + "attributes": { + "description": "Team update attributes", + "properties": { + "avatar": { + "description": "Unicode representation of the avatar for the team, limited to a single grapheme", + "example": "🥑", + "nullable": true, + "type": "string" + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": true, + "type": "integer" + }, + "description": { + "description": "Free-form markdown description/content for the team's homepage", + "type": "string" + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string" + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string" + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "relationships": { + "description": "Team update relationships", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "team", + "description": "Team type", + "enum": [ + "team" + ], + "example": "team", + "type": "string", + "x-enum-varnames": [ + "TEAM" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "TeamsField": { + "description": "Supported teams field.", + "enum": [ + "id", + "name", + "handle", + "summary", + "description", + "avatar", + "banner", + "visible_modules", + "hidden_modules", + "created_at", + "modified_at", + "user_count", + "link_count", + "team_links", + "user_team_permissions" + ], + "type": "string", + "x-enum-varnames": [ + "ID", + "NAME", + "HANDLE", + "SUMMARY", + "DESCRIPTION", + "AVATAR", + "BANNER", + "VISIBLE_MODULES", + "HIDDEN_MODULES", + "CREATED_AT", + "MODIFIED_AT", + "USER_COUNT", + "LINK_COUNT", + "TEAM_LINKS", + "USER_TEAM_PERMISSIONS" + ] + }, + "TeamsResponse": { + "description": "Response with multiple teams", + "properties": { + "data": { + "description": "Teams response data", + "items": { + "description": "A team", + "properties": { + "attributes": { + "description": "Team attributes", + "properties": { + "avatar": { + "description": "Unicode representation of the avatar for the team, limited to a single grapheme", + "example": "🥑", + "nullable": true, + "type": "string" + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": true, + "type": "integer" + }, + "created_at": { + "description": "Creation date of the team", + "format": "date-time", + "type": "string" + }, + "description": { + "description": "Free-form markdown description/content for the team's homepage", + "nullable": true, + "type": "string" + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string" + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + }, + "link_count": { + "description": "The number of links belonging to the team", + "format": "int32", + "maximum": 2147483647, + "readOnly": true, + "type": "integer" + }, + "modified_at": { + "description": "Modification date of the team", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string" + }, + "summary": { + "description": "A brief summary of the team, derived from the `description`", + "maxLength": 120, + "nullable": true, + "type": "string" + }, + "user_count": { + "description": "The number of users belonging to the team", + "format": "int32", + "maximum": 2147483647, + "readOnly": true, + "type": "integer" + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "id": { + "description": "The team's identifier", + "example": "aeadc05e-98a8-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "relationships": { + "description": "Resources related to a team", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "user_team_permissions": { + "description": "Relationship between a user team permission and a team", + "properties": { + "data": { + "description": "Related user team permission data", + "properties": { + "id": { + "description": "The ID of the user team permission", + "example": "UserTeamPermissions-aeadc05e-98a8-11ec-ac2c-da7ad0900001-416595", + "type": "string" + }, + "type": { + "default": "user_team_permissions", + "description": "User team permission type", + "enum": [ + "user_team_permissions" + ], + "example": "user_team_permissions", + "type": "string", + "x-enum-varnames": [ + "USER_TEAM_PERMISSIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "team", + "description": "Team type", + "enum": [ + "team" + ], + "example": "team", + "type": "string", + "x-enum-varnames": [ + "TEAM" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "included": { + "description": "Resources related to the team", + "items": { + "description": "Included resources related to the team", + "oneOf": [ + { + "description": "User object returned by the API.", + "properties": { + "attributes": { + "description": "Attributes of user object returned by the API.", + "properties": { + "created_at": { + "description": "Creation time of the user.", + "format": "date-time", + "type": "string" + }, + "disabled": { + "description": "Whether the user is disabled.", + "type": "boolean" + }, + "email": { + "description": "Email of the user.", + "type": "string" + }, + "handle": { + "description": "Handle of the user.", + "type": "string" + }, + "icon": { + "description": "URL of the user's icon.", + "type": "string" + }, + "mfa_enabled": { + "description": "If user has MFA enabled.", + "readOnly": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time that the user was last modified.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the user.", + "nullable": true, + "type": "string" + }, + "service_account": { + "description": "Whether the user is a service account.", + "type": "boolean" + }, + "status": { + "description": "Status of the user.", + "type": "string" + }, + "title": { + "description": "Title of the user.", + "nullable": true, + "type": "string" + }, + "verified": { + "description": "Whether the user is verified.", + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the user.", + "type": "string" + }, + "relationships": { + "description": "Relationships of the user object returned by the API.", + "properties": { + "org": { + "description": "Relationship to an organization.", + "properties": { + "data": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "other_orgs": { + "description": "Relationship to organizations.", + "properties": { + "data": { + "description": "Relationships to organization objects.", + "example": [], + "items": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "other_users": { + "description": "Relationship to users.", + "properties": { + "data": { + "description": "Relationships to user objects.", + "example": [], + "items": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An array containing type and the unique identifier of a role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The unique identifier of the role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string" + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": [ + "roles" + ], + "example": "roles", + "type": "string", + "x-enum-varnames": [ + "ROLES" + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "type": "object" + }, + { + "description": "Team link", + "properties": { + "attributes": { + "description": "Team link attributes", + "properties": { + "label": { + "description": "The link's label", + "example": "Link label", + "maxLength": 256, + "type": "string" + }, + "position": { + "description": "The link's position, used to sort links for the team", + "format": "int32", + "maximum": 2147483647, + "type": "integer" + }, + "team_id": { + "description": "ID of the team the link is associated with", + "readOnly": true, + "type": "string" + }, + "url": { + "description": "The URL for the link", + "example": "https://example.com", + "type": "string" + } + }, + "required": [ + "label", + "url" + ], + "type": "object" + }, + "id": { + "description": "The team link's identifier", + "example": "b8626d7e-cedd-11eb-abf5-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "attributes", + "id", + "type" ], "type": "object" }, { - "description": "Sends a message to a Microsoft Teams channel.", + "description": "A user's permissions for a given team", "properties": { - "channel": { - "description": "The channel ID.", - "example": "CHANNEL", - "type": "string" - }, - "team": { - "description": "The team ID.", - "example": "TEAM", - "type": "string" + "attributes": { + "description": "User team permission attributes", + "properties": { + "permissions": { + "description": "Object of team permission actions and boolean values that a logged in user can perform on this team.", + "readOnly": true, + "type": "object" + } + }, + "type": "object" }, - "tenant": { - "description": "The tenant ID.", - "example": "TENANT", + "id": { + "description": "The user team permission's identifier", + "example": "UserTeamPermissions-aeadc05e-98a8-11ec-ac2c-da7ad0900001-416595", "type": "string" }, "type": { - "default": "send_teams_message", - "description": "Indicates that the action is a send Microsoft Teams message action.", + "default": "user_team_permissions", + "description": "User team permission type", "enum": [ - "send_teams_message" + "user_team_permissions" ], - "example": "send_teams_message", + "example": "user_team_permissions", "type": "string", "x-enum-varnames": [ - "SEND_TEAMS_MESSAGE" + "USER_TEAM_PERMISSIONS" ] } }, "required": [ - "type", - "channel", - "tenant", - "team" + "id", + "type" ], "type": "object" } @@ -360173,694 +358612,2066 @@ }, "type": "array" }, - "policy_id": { - "description": "Identifies the policy to be applied when this routing rule matches.", + "links": { + "description": "Teams response links.", + "properties": { + "first": { + "description": "First link.", + "type": "string" + }, + "last": { + "description": "Last link.", + "nullable": true, + "type": "string" + }, + "next": { + "description": "Next link.", + "type": "string" + }, + "prev": { + "description": "Previous link.", + "nullable": true, + "type": "string" + }, + "self": { + "description": "Current link.", + "type": "string" + } + }, + "type": "object" + }, + "meta": { + "description": "Teams response metadata.", + "properties": { + "pagination": { + "description": "Teams response metadata.", + "properties": { + "first_offset": { + "description": "The first offset.", + "format": "int64", + "type": "integer" + }, + "last_offset": { + "description": "The last offset.", + "format": "int64", + "type": "integer" + }, + "limit": { + "description": "Pagination limit.", + "format": "int64", + "type": "integer" + }, + "next_offset": { + "description": "The next offset.", + "format": "int64", + "type": "integer" + }, + "offset": { + "description": "The offset.", + "format": "int64", + "type": "integer" + }, + "prev_offset": { + "description": "The previous offset.", + "format": "int64", + "type": "integer" + }, + "total": { + "description": "Total results.", + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Offset type.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "TeamsResponseLinks": { + "description": "Teams response links.", + "properties": { + "first": { + "description": "First link.", "type": "string" }, - "query": { - "description": "Defines the query or condition that triggers this routing rule.", + "last": { + "description": "Last link.", + "nullable": true, "type": "string" }, - "time_restriction": { - "description": "Holds time zone information and a list of time restrictions for a routing rule.", + "next": { + "description": "Next link.", + "type": "string" + }, + "prev": { + "description": "Previous link.", + "nullable": true, + "type": "string" + }, + "self": { + "description": "Current link.", + "type": "string" + } + }, + "type": "object" + }, + "TeamsResponseMeta": { + "description": "Teams response metadata.", + "properties": { + "pagination": { + "description": "Teams response metadata.", "properties": { - "restrictions": { - "description": "Defines the list of time-based restrictions.", - "items": { - "description": "Defines a single time restriction rule with start and end times and the applicable weekdays.", - "properties": { - "end_day": { - "description": "A day of the week.", - "enum": [ - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - "sunday" - ], - "type": "string", - "x-enum-varnames": [ - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY", - "SUNDAY" - ] - }, - "end_time": { - "description": "Specifies the ending time for this restriction.", - "type": "string" - }, - "start_day": { - "description": "A day of the week.", - "enum": [ - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - "sunday" - ], - "type": "string", - "x-enum-varnames": [ - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY", - "SUNDAY" - ] - }, - "start_time": { - "description": "Specifies the starting time for this restriction.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" + "first_offset": { + "description": "The first offset.", + "format": "int64", + "type": "integer" }, - "time_zone": { - "description": "Specifies the time zone applicable to the restrictions.", - "example": "", + "last_offset": { + "description": "The last offset.", + "format": "int64", + "type": "integer" + }, + "limit": { + "description": "Pagination limit.", + "format": "int64", + "type": "integer" + }, + "next_offset": { + "description": "The next offset.", + "format": "int64", + "type": "integer" + }, + "offset": { + "description": "The offset.", + "format": "int64", + "type": "integer" + }, + "prev_offset": { + "description": "The previous offset.", + "format": "int64", + "type": "integer" + }, + "total": { + "description": "Total results.", + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Offset type.", "type": "string" } }, - "required": [ - "time_zone", - "restrictions" - ], "type": "object" - }, - "urgency": { - "description": "Specifies the level of urgency for a routing rule (low, high, or dynamic).", - "enum": [ - "low", - "high", - "dynamic" - ], - "example": "low", - "type": "string", - "x-enum-varnames": [ - "LOW", - "HIGH", - "DYNAMIC" - ] } }, "type": "object" }, - "TeamSyncAttributes": { - "description": "Team sync attributes.", + "TeamsResponseMetaPagination": { + "description": "Teams response metadata.", "properties": { - "source": { - "description": "The external source platform for team synchronization. Only \"github\" is supported.", - "enum": [ - "github" - ], - "example": "github", - "type": "string", - "x-enum-varnames": [ - "GITHUB" - ] + "first_offset": { + "description": "The first offset.", + "format": "int64", + "type": "integer" + }, + "last_offset": { + "description": "The last offset.", + "format": "int64", + "type": "integer" + }, + "limit": { + "description": "Pagination limit.", + "format": "int64", + "type": "integer" + }, + "next_offset": { + "description": "The next offset.", + "format": "int64", + "type": "integer" + }, + "offset": { + "description": "The offset.", + "format": "int64", + "type": "integer" + }, + "prev_offset": { + "description": "The previous offset.", + "format": "int64", + "type": "integer" + }, + "total": { + "description": "Total results.", + "format": "int64", + "type": "integer" }, "type": { - "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", - "enum": [ - "link" - ], - "example": "link", - "type": "string", - "x-enum-varnames": [ - "LINK" - ] + "description": "Offset type.", + "type": "string" } }, - "required": [ - "source", - "type" - ], "type": "object" }, - "TeamSyncAttributesSource": { - "description": "The external source platform for team synchronization. Only \"github\" is supported.", - "enum": [ - "github" - ], - "example": "github", - "type": "string", - "x-enum-varnames": [ - "GITHUB" - ] - }, - "TeamSyncAttributesType": { - "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "ThreatHuntingJobDataType": { + "description": "Type of payload.", "enum": [ - "link" + "historicalDetectionsJob" ], - "example": "link", "type": "string", "x-enum-varnames": [ - "LINK" + "HISTORICALDETECTIONSJOB" ] }, - "TeamSyncBulkType": { - "description": "Team sync bulk type.", - "enum": [ - "team_sync_bulk" - ], - "example": "team_sync_bulk", - "type": "string", - "x-enum-varnames": [ - "TEAM_SYNC_BULK" - ] + "ThreatHuntingJobListMeta": { + "description": "Metadata about the list of jobs.", + "properties": { + "totalCount": { + "description": "Number of jobs in the list.", + "format": "int32", + "maximum": 2147483647, + "type": "integer" + } + }, + "type": "object" }, - "TeamSyncData": { - "description": "Team sync data.", + "ThreatHuntingJobOptions": { + "description": "Job options.", "properties": { - "attributes": { - "description": "Team sync attributes.", + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", "properties": { - "source": { - "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", "enum": [ - "github" + 1, + 2, + 7, + 14, + 21, + 28 ], - "example": "github", - "type": "string", + "format": "int32", + "type": "integer", "x-enum-varnames": [ - "GITHUB" + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" ] }, - "type": { - "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", "enum": [ - "link" + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" ], - "example": "link", "type": "string", "x-enum-varnames": [ - "LINK" + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" ] } }, - "required": [ - "source", - "type" - ], "type": "object" }, - "type": { - "description": "Team sync bulk type.", - "enum": [ - "team_sync_bulk" - ], - "example": "team_sync_bulk", - "type": "string", - "x-enum-varnames": [ - "TEAM_SYNC_BULK" - ] - } - }, - "required": [ - "attributes", - "type" - ], - "type": "object" - }, - "TeamSyncRequest": { - "description": "Team sync request.", - "example": { - "data": { - "attributes": { - "source": "github", - "type": "link" - }, - "type": "team_sync_bulk" - } - }, - "properties": { - "data": { - "description": "Team sync data.", + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", "properties": { - "attributes": { - "description": "Team sync attributes.", - "properties": { - "source": { - "description": "The external source platform for team synchronization. Only \"github\" is supported.", - "enum": [ - "github" - ], - "example": "github", - "type": "string", - "x-enum-varnames": [ - "GITHUB" - ] + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", + "items": { + "description": "Transition from a parent step to a child step within a sequence detection rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" + } }, - "type": { - "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", - "enum": [ - "link" - ], - "example": "link", - "type": "string", - "x-enum-varnames": [ - "LINK" - ] - } + "type": "object" }, - "required": [ - "source", - "type" - ], - "type": "object" + "type": "array" }, - "type": { - "description": "Team sync bulk type.", + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", "enum": [ - "team_sync_bulk" + "info", + "low", + "medium", + "high", + "critical" ], - "example": "team_sync_bulk", + "example": "critical", "type": "string", "x-enum-varnames": [ - "TEAM_SYNC_BULK" + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" } }, - "required": [ - "attributes", - "type" - ], "type": "object" } }, - "required": [ - "data" - ], "type": "object" }, - "TeamTarget": { - "description": "Represents a team target for an escalation policy step, including the team's ID and resource type.", + "ThreatHuntingJobQuery": { + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { - "id": { - "description": "Specifies the unique identifier of the team resource.", - "example": "00000000-aba1-0000-0000-000000000000", - "type": "string" + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] }, - "type": { - "default": "teams", - "description": "Indicates that the resource is of type `teams`.", + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", "enum": [ - "teams" + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" ], - "example": "teams", + "example": "logs", "type": "string", "x-enum-varnames": [ - "TEAMS" + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" ] + }, + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" + }, + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the query.", + "type": "string" + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string" } }, - "required": [ - "type", - "id" - ], "type": "object" }, - "TeamTargetType": { - "default": "teams", - "description": "Indicates that the resource is of type `teams`.", - "enum": [ - "teams" - ], - "example": "teams", - "type": "string", - "x-enum-varnames": [ - "TEAMS" - ] - }, - "TeamType": { - "default": "team", - "description": "Team type", - "enum": [ - "team" - ], - "example": "team", - "type": "string", - "x-enum-varnames": [ - "TEAM" - ] - }, - "TeamUpdate": { - "description": "Team update request", + "ThreatHuntingJobResponse": { + "description": "Threat hunting job response.", "properties": { - "attributes": { - "description": "Team update attributes", - "properties": { - "avatar": { - "description": "Unicode representation of the avatar for the team, limited to a single grapheme", - "example": "🥑", - "nullable": true, - "type": "string" - }, - "banner": { - "description": "Banner selection for the team", - "format": "int64", - "nullable": true, - "type": "integer" - }, - "description": { - "description": "Free-form markdown description/content for the team's homepage", - "type": "string" - }, - "handle": { - "description": "The team's identifier", - "example": "example-team", - "maxLength": 195, - "type": "string" - }, - "hidden_modules": { - "description": "Collection of hidden modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "The name of the team", - "example": "Example Team", - "maxLength": 200, - "type": "string" - }, - "visible_modules": { - "description": "Collection of visible modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "handle", - "name" - ], - "type": "object" - }, - "relationships": { - "description": "Team update relationships", + "data": { + "description": "Threat hunting job response data.", "properties": { - "team_links": { - "description": "Relationship between a team and a team link", + "attributes": { + "description": "Threat hunting job attributes.", "properties": { - "data": { - "description": "Related team links", - "items": { - "description": "Relationship between a link and a team", - "properties": { - "id": { - "description": "The team link's identifier", - "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "createdAt": { + "description": "Time when the job was created.", + "type": "string" + }, + "createdByHandle": { + "description": "The handle of the user who created the job.", + "type": "string" + }, + "createdByName": { + "description": "The name of the user who created the job.", + "type": "string" + }, + "createdFromRuleId": { + "description": "ID of the rule used to create the job (if it is created from a rule).", + "type": "string" + }, + "jobDefinition": { + "description": "Definition of a threat hunting job.", + "properties": { + "calculatedFields": { + "description": "Calculated fields.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string" + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string" + } + }, + "required": [ + "name", + "expression" + ], + "type": "object" + }, + "type": "array" + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration of the action in seconds. 0 indicates no expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "flaggedIPType": { + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED" + ] + }, + "userBehaviorName": { + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "condition": { + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", + "type": "string" + }, + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "type": "array" + }, + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer" + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", + "example": [ + "service" + ], + "items": { + "description": "Field to group by.", "type": "string" }, - "type": { - "default": "team_links", - "description": "Team link type", - "enum": [ - "team_links" + "type": "array" + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string" + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string" + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string" + }, + "options": { + "description": "Job options.", + "properties": { + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", + "enum": [ + 1, + 2, + 7, + 14, + 21, + 28 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" + ] + }, + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", + "enum": [ + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" + ], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" + ] + } + }, + "type": "object" + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", + "items": { + "description": "Transition from a parent step to a child step within a sequence detection rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "queries": { + "description": "Queries for selecting logs analyzed by the job.", + "items": { + "description": "Query for selecting logs analyzed by the threat hunting job.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] + }, + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" + ] + }, + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" + }, + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the query.", + "type": "string" + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean" + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string" + }, + "logFieldPath": { + "description": "The field in the log to match against the reference table.", + "type": "string" + }, + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", + "type": "string" + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tags": { + "description": "Tags for generated signals.", + "items": { + "type": "string" + }, + "type": "array" + }, + "thirdPartyCases": { + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets for each case.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + } + }, + "required": [ + "status" ], - "example": "team_links", - "type": "string", - "x-enum-varnames": [ - "TEAM_LINKS" - ] - } + "type": "object" + }, + "type": "array" }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Job type.", "type": "string" } }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message" + ], "type": "object" + }, + "jobName": { + "description": "Job name.", + "type": "string" + }, + "jobStatus": { + "description": "Job status.", + "type": "string" + }, + "modifiedAt": { + "description": "Last modification time of the job.", + "type": "string" } }, "type": "object" + }, + "id": { + "description": "ID of the job.", + "type": "string" + }, + "type": { + "description": "Type of payload.", + "enum": [ + "historicalDetectionsJob" + ], + "type": "string", + "x-enum-varnames": [ + "HISTORICALDETECTIONSJOB" + ] } }, "type": "object" - }, - "type": { - "default": "team", - "description": "Team type", - "enum": [ - "team" - ], - "example": "team", - "type": "string", - "x-enum-varnames": [ - "TEAM" - ] } }, - "required": [ - "attributes", - "type" - ], "type": "object" }, - "TeamUpdateAttributes": { - "description": "Team update attributes", + "ThreatHuntingJobResponseAttributes": { + "description": "Threat hunting job attributes.", "properties": { - "avatar": { - "description": "Unicode representation of the avatar for the team, limited to a single grapheme", - "example": "🥑", - "nullable": true, + "createdAt": { + "description": "Time when the job was created.", "type": "string" }, - "banner": { - "description": "Banner selection for the team", - "format": "int64", - "nullable": true, - "type": "integer" - }, - "description": { - "description": "Free-form markdown description/content for the team's homepage", + "createdByHandle": { + "description": "The handle of the user who created the job.", "type": "string" }, - "handle": { - "description": "The team's identifier", - "example": "example-team", - "maxLength": 195, + "createdByName": { + "description": "The name of the user who created the job.", "type": "string" }, - "hidden_modules": { - "description": "Collection of hidden modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "The name of the team", - "example": "Example Team", - "maxLength": 200, + "createdFromRuleId": { + "description": "ID of the rule used to create the job (if it is created from a rule).", "type": "string" }, - "visible_modules": { - "description": "Collection of visible modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "handle", - "name" - ], - "type": "object" - }, - "TeamUpdateRelationships": { - "description": "Team update relationships", - "properties": { - "team_links": { - "description": "Relationship between a team and a team link", + "jobDefinition": { + "description": "Definition of a threat hunting job.", "properties": { - "data": { - "description": "Related team links", + "calculatedFields": { + "description": "Calculated fields.", "items": { - "description": "Relationship between a link and a team", + "description": "Calculated field.", "properties": { - "id": { - "description": "The team link's identifier", - "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", "type": "string" }, - "type": { - "default": "team_links", - "description": "Team link type", + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string" + } + }, + "required": [ + "name", + "expression" + ], + "type": "object" + }, + "type": "array" + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration of the action in seconds. 0 indicates no expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "flaggedIPType": { + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED" + ] + }, + "userBehaviorName": { + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "condition": { + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", + "type": "string" + }, + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "status": { + "description": "Severity of the Security Signal.", "enum": [ - "team_links" + "info", + "low", + "medium", + "high", + "critical" ], - "example": "team_links", + "example": "critical", "type": "string", "x-enum-varnames": [ - "TEAM_LINKS" + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" ] } }, "required": [ - "id", - "type" + "status" ], "type": "object" }, "type": "array" }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "TeamUpdateRequest": { - "description": "Team update request", - "properties": { - "data": { - "description": "Team update request", - "properties": { - "attributes": { - "description": "Team update attributes", + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer" + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", + "example": [ + "service" + ], + "items": { + "description": "Field to group by.", + "type": "string" + }, + "type": "array" + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string" + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string" + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string" + }, + "options": { + "description": "Job options.", "properties": { - "avatar": { - "description": "Unicode representation of the avatar for the team, limited to a single grapheme", - "example": "🥑", - "nullable": true, - "type": "string" - }, - "banner": { - "description": "Banner selection for the team", - "format": "int64", - "nullable": true, - "type": "integer" - }, - "description": { - "description": "Free-form markdown description/content for the team's homepage", - "type": "string" + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] }, - "handle": { - "description": "The team's identifier", - "example": "example-team", - "maxLength": 195, - "type": "string" + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] }, - "hidden_modules": { - "description": "Collection of hidden modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } }, - "type": "array" + "type": "object" }, - "name": { - "description": "The name of the team", - "example": "Example Team", - "maxLength": 200, - "type": "string" + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] }, - "visible_modules": { - "description": "Collection of visible modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", + "enum": [ + 1, + 2, + 7, + 14, + 21, + 28 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" + ] + }, + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", + "enum": [ + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" + ], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" + ] + } }, - "type": "array" - } - }, - "required": [ - "handle", - "name" - ], - "type": "object" - }, - "relationships": { - "description": "Team update relationships", - "properties": { - "team_links": { - "description": "Relationship between a team and a team link", + "type": "object" + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", "properties": { - "data": { - "description": "Related team links", + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", "items": { - "description": "Relationship between a link and a team", + "description": "Transition from a parent step to a child step within a sequence detection rule.", "properties": { - "id": { - "description": "The team link's identifier", - "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "child": { + "description": "Name of the child step.", "type": "string" }, - "type": { - "default": "team_links", - "description": "Team link type", + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", "enum": [ - "team_links" + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 ], - "example": "team_links", - "type": "string", + "format": "int32", + "type": "integer", "x-enum-varnames": [ - "TEAM_LINKS" + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" } }, - "required": [ - "id", - "type" - ], "type": "object" }, "type": "array" }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", - "type": "string" - } + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } + }, + "type": "object" }, - "type": "object" + "type": "array" + } + }, + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" } }, "type": "object" @@ -360868,834 +360679,1023 @@ }, "type": "object" }, - "type": { - "default": "team", - "description": "Team type", - "enum": [ - "team" - ], - "example": "team", - "type": "string", - "x-enum-varnames": [ - "TEAM" - ] - } - }, - "required": [ - "attributes", - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "TeamsField": { - "description": "Supported teams field.", - "enum": [ - "id", - "name", - "handle", - "summary", - "description", - "avatar", - "banner", - "visible_modules", - "hidden_modules", - "created_at", - "modified_at", - "user_count", - "link_count", - "team_links", - "user_team_permissions" - ], - "type": "string", - "x-enum-varnames": [ - "ID", - "NAME", - "HANDLE", - "SUMMARY", - "DESCRIPTION", - "AVATAR", - "BANNER", - "VISIBLE_MODULES", - "HIDDEN_MODULES", - "CREATED_AT", - "MODIFIED_AT", - "USER_COUNT", - "LINK_COUNT", - "TEAM_LINKS", - "USER_TEAM_PERMISSIONS" - ] - }, - "TeamsResponse": { - "description": "Response with multiple teams", - "properties": { - "data": { - "description": "Teams response data", - "items": { - "description": "A team", - "properties": { - "attributes": { - "description": "Team attributes", + "queries": { + "description": "Queries for selecting logs analyzed by the job.", + "items": { + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { - "avatar": { - "description": "Unicode representation of the avatar for the team, limited to a single grapheme", - "example": "🥑", - "nullable": true, - "type": "string" + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] }, - "banner": { - "description": "Banner selection for the team", - "format": "int64", - "nullable": true, - "type": "integer" + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" + ] }, - "created_at": { - "description": "Creation date of the team", - "format": "date-time", - "type": "string" + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" }, - "description": { - "description": "Free-form markdown description/content for the team's homepage", - "nullable": true, - "type": "string" + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" }, - "handle": { - "description": "The team's identifier", - "example": "example-team", - "maxLength": 195, - "type": "string" + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" }, - "hidden_modules": { - "description": "Collection of hidden modules for the team", + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", "items": { - "description": "String identifier of the module", + "description": "Field.", "type": "string" }, "type": "array" }, - "link_count": { - "description": "The number of links belonging to the team", - "format": "int32", - "maximum": 2147483647, - "readOnly": true, - "type": "integer" + "name": { + "description": "Name of the query.", + "type": "string" }, - "modified_at": { - "description": "Modification date of the team", - "format": "date-time", + "query": { + "description": "Query to run on logs.", + "example": "a > 3", "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean" }, - "name": { - "description": "The name of the team", - "example": "Example Team", - "maxLength": 200, + "columnName": { + "description": "The name of the column in the reference table.", "type": "string" }, - "summary": { - "description": "A brief summary of the team, derived from the `description`", - "maxLength": 120, - "nullable": true, + "logFieldPath": { + "description": "The field in the log to match against the reference table.", "type": "string" }, - "user_count": { - "description": "The number of users belonging to the team", - "format": "int32", - "maximum": 2147483647, - "readOnly": true, - "type": "integer" + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", + "type": "string" }, - "visible_modules": { - "description": "Collection of visible modules for the team", + "tableName": { + "description": "The name of the reference table.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tags": { + "description": "Tags for generated signals.", + "items": { + "type": "string" + }, + "type": "array" + }, + "thirdPartyCases": { + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets for each case.", "items": { - "description": "String identifier of the module", + "description": "Notification.", "type": "string" }, "type": "array" + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] } }, "required": [ - "handle", - "name" + "status" ], "type": "object" }, - "id": { - "description": "The team's identifier", - "example": "aeadc05e-98a8-11ec-ac2c-da7ad0900001", - "type": "string" - }, - "relationships": { - "description": "Resources related to a team", - "properties": { - "team_links": { - "description": "Relationship between a team and a team link", + "type": "array" + }, + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Job type.", + "type": "string" + } + }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message" + ], + "type": "object" + }, + "jobName": { + "description": "Job name.", + "type": "string" + }, + "jobStatus": { + "description": "Job status.", + "type": "string" + }, + "modifiedAt": { + "description": "Last modification time of the job.", + "type": "string" + } + }, + "type": "object" + }, + "ThreatHuntingJobResponseData": { + "description": "Threat hunting job response data.", + "properties": { + "attributes": { + "description": "Threat hunting job attributes.", + "properties": { + "createdAt": { + "description": "Time when the job was created.", + "type": "string" + }, + "createdByHandle": { + "description": "The handle of the user who created the job.", + "type": "string" + }, + "createdByName": { + "description": "The name of the user who created the job.", + "type": "string" + }, + "createdFromRuleId": { + "description": "ID of the rule used to create the job (if it is created from a rule).", + "type": "string" + }, + "jobDefinition": { + "description": "Definition of a threat hunting job.", + "properties": { + "calculatedFields": { + "description": "Calculated fields.", + "items": { + "description": "Calculated field.", "properties": { - "data": { - "description": "Related team links", + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string" + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string" + } + }, + "required": [ + "name", + "expression" + ], + "type": "object" + }, + "type": "array" + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", "items": { - "description": "Relationship between a link and a team", + "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", "properties": { - "id": { - "description": "The team link's identifier", - "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", - "type": "string" + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration of the action in seconds. 0 indicates no expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "flaggedIPType": { + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED" + ] + }, + "userBehaviorName": { + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", + "type": "string" + } + }, + "type": "object" }, "type": { - "default": "team_links", - "description": "Team link type", + "description": "The action type.", "enum": [ - "team_links" + "block_ip", + "block_user", + "user_behavior", + "flag_ip" ], - "example": "team_links", "type": "string", "x-enum-varnames": [ - "TEAM_LINKS" + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP" ] } }, - "required": [ - "id", - "type" - ], "type": "object" }, "type": "array" }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "user_team_permissions": { - "description": "Relationship between a user team permission and a team", - "properties": { - "data": { - "description": "Related user team permission data", - "properties": { - "id": { - "description": "The ID of the user team permission", - "example": "UserTeamPermissions-aeadc05e-98a8-11ec-ac2c-da7ad0900001-416595", - "type": "string" - }, - "type": { - "default": "user_team_permissions", - "description": "User team permission type", - "enum": [ - "user_team_permissions" - ], - "example": "user_team_permissions", - "type": "string", - "x-enum-varnames": [ - "USER_TEAM_PERMISSIONS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": { - "default": "team", - "description": "Team type", - "enum": [ - "team" - ], - "example": "team", - "type": "string", - "x-enum-varnames": [ - "TEAM" - ] - } - }, - "required": [ - "attributes", - "id", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "included": { - "description": "Resources related to the team", - "items": { - "description": "Included resources related to the team", - "oneOf": [ - { - "description": "User object returned by the API.", - "properties": { - "attributes": { - "description": "Attributes of user object returned by the API.", - "properties": { - "created_at": { - "description": "Creation time of the user.", - "format": "date-time", - "type": "string" - }, - "disabled": { - "description": "Whether the user is disabled.", - "type": "boolean" - }, - "email": { - "description": "Email of the user.", - "type": "string" - }, - "handle": { - "description": "Handle of the user.", - "type": "string" - }, - "icon": { - "description": "URL of the user's icon.", - "type": "string" - }, - "mfa_enabled": { - "description": "If user has MFA enabled.", - "readOnly": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time that the user was last modified.", - "format": "date-time", + "condition": { + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", "type": "string" }, "name": { - "description": "Name of the user.", - "nullable": true, + "description": "Name of the case.", "type": "string" }, - "service_account": { - "description": "Whether the user is a service account.", - "type": "boolean" + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" }, "status": { - "description": "Status of the user.", - "type": "string" - }, - "title": { - "description": "Title of the user.", - "nullable": true, - "type": "string" - }, - "verified": { - "description": "Whether the user is verified.", - "type": "boolean" + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] } }, + "required": [ + "status" + ], "type": "object" }, - "id": { - "description": "ID of the user.", + "type": "array" + }, + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer" + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", + "example": [ + "service" + ], + "items": { + "description": "Field to group by.", "type": "string" }, - "relationships": { - "description": "Relationships of the user object returned by the API.", - "properties": { - "org": { - "description": "Relationship to an organization.", - "properties": { - "data": { - "description": "Relationship to organization object.", + "type": "array" + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string" + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string" + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string" + }, + "options": { + "description": "Job options.", + "properties": { + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", + "enum": [ + 1, + 2, + 7, + 14, + 21, + 28 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" + ] + }, + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", + "enum": [ + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" + ], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" + ] + } + }, + "type": "object" + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", + "items": { + "description": "Transition from a parent step to a child step within a sequence detection rule.", "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", + "child": { + "description": "Name of the child step.", "type": "string" }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", "enum": [ - "orgs" + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 ], - "example": "orgs", - "type": "string", + "format": "int32", + "type": "integer", "x-enum-varnames": [ - "ORGS" + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" } }, - "required": [ - "id", - "type" - ], "type": "object" - } + }, + "type": "array" }, - "required": [ - "data" - ], - "type": "object" - }, - "other_orgs": { - "description": "Relationship to organizations.", - "properties": { - "data": { - "description": "Relationships to organization objects.", - "example": [], - "items": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" }, - "required": [ - "id", - "type" - ], - "type": "object" + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" + "type": "object" + }, + "type": "array" + } }, - "other_users": { - "description": "Relationship to users.", - "properties": { - "data": { - "description": "Relationships to user objects.", - "example": [], - "items": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", "type": "string" }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } + "type": "array" }, - "required": [ - "id", - "type" - ], - "type": "object" + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } }, - "type": "array" - } + "type": "object" + }, + "type": "array" }, - "required": [ - "data" + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "queries": { + "description": "Queries for selecting logs analyzed by the job.", + "items": { + "description": "Query for selecting logs analyzed by the threat hunting job.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" ], - "type": "object" + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] }, - "roles": { - "description": "Relationship to roles.", - "properties": { - "data": { - "description": "An array containing type and the unique identifier of a role.", - "items": { - "description": "Relationship to role object.", - "properties": { - "id": { - "description": "The unique identifier of the role.", - "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", - "type": "string" - }, - "type": { - "default": "roles", - "description": "Roles type.", - "enum": [ - "roles" - ], - "example": "roles", - "type": "string", - "x-enum-varnames": [ - "ROLES" - ] - } - }, - "type": "object" - }, - "type": "array" - } + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" + ] + }, + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" }, - "type": "object" + "type": "array" + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" + }, + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the query.", + "type": "string" + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string" } }, "type": "object" }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } + "type": "array" }, - "type": "object" - }, - { - "description": "Team link", - "properties": { - "attributes": { - "description": "Team link attributes", + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", "properties": { - "label": { - "description": "The link's label", - "example": "Link label", - "maxLength": 256, + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean" + }, + "columnName": { + "description": "The name of the column in the reference table.", "type": "string" }, - "position": { - "description": "The link's position, used to sort links for the team", - "format": "int32", - "maximum": 2147483647, - "type": "integer" + "logFieldPath": { + "description": "The field in the log to match against the reference table.", + "type": "string" }, - "team_id": { - "description": "ID of the team the link is associated with", - "readOnly": true, + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", "type": "string" }, - "url": { - "description": "The URL for the link", - "example": "https://example.com", + "tableName": { + "description": "The name of the reference table.", "type": "string" } }, - "required": [ - "label", - "url" - ], "type": "object" }, - "id": { - "description": "The team link's identifier", - "example": "b8626d7e-cedd-11eb-abf5-da7ad0900001", + "type": "array" + }, + "tags": { + "description": "Tags for generated signals.", + "items": { "type": "string" }, - "type": { - "default": "team_links", - "description": "Team link type", - "enum": [ - "team_links" - ], - "example": "team_links", - "type": "string", - "x-enum-varnames": [ - "TEAM_LINKS" - ] - } + "type": "array" }, - "required": [ - "attributes", - "id", - "type" - ], - "type": "object" - }, - { - "description": "A user's permissions for a given team", - "properties": { - "attributes": { - "description": "User team permission attributes", + "thirdPartyCases": { + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", "properties": { - "permissions": { - "description": "Object of team permission actions and boolean values that a logged in user can perform on this team.", - "readOnly": true, - "type": "object" + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets for each case.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] } }, + "required": [ + "status" + ], "type": "object" }, - "id": { - "description": "The user team permission's identifier", - "example": "UserTeamPermissions-aeadc05e-98a8-11ec-ac2c-da7ad0900001-416595", - "type": "string" - }, - "type": { - "default": "user_team_permissions", - "description": "User team permission type", - "enum": [ - "user_team_permissions" - ], - "example": "user_team_permissions", - "type": "string", - "x-enum-varnames": [ - "USER_TEAM_PERMISSIONS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } - ] - }, - "type": "array" - }, - "links": { - "description": "Teams response links.", - "properties": { - "first": { - "description": "First link.", - "type": "string" - }, - "last": { - "description": "Last link.", - "nullable": true, - "type": "string" - }, - "next": { - "description": "Next link.", - "type": "string" - }, - "prev": { - "description": "Previous link.", - "nullable": true, - "type": "string" - }, - "self": { - "description": "Current link.", - "type": "string" - } - }, - "type": "object" - }, - "meta": { - "description": "Teams response metadata.", - "properties": { - "pagination": { - "description": "Teams response metadata.", - "properties": { - "first_offset": { - "description": "The first offset.", - "format": "int64", - "type": "integer" - }, - "last_offset": { - "description": "The last offset.", - "format": "int64", - "type": "integer" - }, - "limit": { - "description": "Pagination limit.", - "format": "int64", - "type": "integer" - }, - "next_offset": { - "description": "The next offset.", - "format": "int64", - "type": "integer" - }, - "offset": { - "description": "The offset.", - "format": "int64", - "type": "integer" - }, - "prev_offset": { - "description": "The previous offset.", - "format": "int64", - "type": "integer" + "type": "array" }, - "total": { - "description": "Total results.", + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, "format": "int64", "type": "integer" }, "type": { - "description": "Offset type.", + "description": "Job type.", "type": "string" } }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message" + ], "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "TeamsResponseLinks": { - "description": "Teams response links.", - "properties": { - "first": { - "description": "First link.", - "type": "string" - }, - "last": { - "description": "Last link.", - "nullable": true, - "type": "string" - }, - "next": { - "description": "Next link.", - "type": "string" - }, - "prev": { - "description": "Previous link.", - "nullable": true, - "type": "string" - }, - "self": { - "description": "Current link.", - "type": "string" - } - }, - "type": "object" - }, - "TeamsResponseMeta": { - "description": "Teams response metadata.", - "properties": { - "pagination": { - "description": "Teams response metadata.", - "properties": { - "first_offset": { - "description": "The first offset.", - "format": "int64", - "type": "integer" - }, - "last_offset": { - "description": "The last offset.", - "format": "int64", - "type": "integer" - }, - "limit": { - "description": "Pagination limit.", - "format": "int64", - "type": "integer" - }, - "next_offset": { - "description": "The next offset.", - "format": "int64", - "type": "integer" - }, - "offset": { - "description": "The offset.", - "format": "int64", - "type": "integer" }, - "prev_offset": { - "description": "The previous offset.", - "format": "int64", - "type": "integer" + "jobName": { + "description": "Job name.", + "type": "string" }, - "total": { - "description": "Total results.", - "format": "int64", - "type": "integer" + "jobStatus": { + "description": "Job status.", + "type": "string" }, - "type": { - "description": "Offset type.", + "modifiedAt": { + "description": "Last modification time of the job.", "type": "string" } }, "type": "object" - } - }, - "type": "object" - }, - "TeamsResponseMetaPagination": { - "description": "Teams response metadata.", - "properties": { - "first_offset": { - "description": "The first offset.", - "format": "int64", - "type": "integer" - }, - "last_offset": { - "description": "The last offset.", - "format": "int64", - "type": "integer" - }, - "limit": { - "description": "Pagination limit.", - "format": "int64", - "type": "integer" }, - "next_offset": { - "description": "The next offset.", - "format": "int64", - "type": "integer" - }, - "offset": { - "description": "The offset.", - "format": "int64", - "type": "integer" - }, - "prev_offset": { - "description": "The previous offset.", - "format": "int64", - "type": "integer" - }, - "total": { - "description": "Total results.", - "format": "int64", - "type": "integer" + "id": { + "description": "ID of the job.", + "type": "string" }, "type": { - "description": "Offset type.", - "type": "string" + "description": "Type of payload.", + "enum": [ + "historicalDetectionsJob" + ], + "type": "string", + "x-enum-varnames": [ + "HISTORICALDETECTIONSJOB" + ] } }, "type": "object" @@ -694426,7 +694426,7 @@ "x-unstable": "**Note**: This endpoint is deprecated." } }, - "/api/v2/siem-historical-detections/histsignals": { + "/api/v2/siem-threat-hunting/histsignals": { "get": { "description": "List hist signals.", "operationId": "ListSecurityMonitoringHistsignals", @@ -694758,7 +694758,7 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/histsignals/search": { + "/api/v2/siem-threat-hunting/histsignals/search": { "get": { "description": "Search hist signals.", "operationId": "SearchSecurityMonitoringHistsignals", @@ -695082,13 +695082,13 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/histsignals/{histsignal_id}": { + "/api/v2/siem-threat-hunting/histsignals/{histsignal_id}": { "get": { "description": "Get a hist signal's details.", "operationId": "GetSecurityMonitoringHistsignal", "parameters": [ { - "description": "The ID of the historical signal.", + "description": "The ID of the threat hunting signal.", "in": "path", "name": "histsignal_id", "required": true, @@ -695318,10 +695318,10 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs": { + "/api/v2/siem-threat-hunting/jobs": { "get": { - "description": "List historical jobs.", - "operationId": "ListHistoricalJobs", + "description": "List threat hunting jobs.", + "operationId": "ListThreatHuntingJobs", "parameters": [ { "description": "Size for a given page. The maximum allowed value is 100.", @@ -695373,15 +695373,15 @@ "content": { "application/json": { "schema": { - "description": "List of historical jobs.", + "description": "List of threat hunting jobs.", "properties": { "data": { - "description": "Array containing the list of historical jobs.", + "description": "Array containing the list of threat hunting jobs.", "items": { - "description": "Historical job response data.", + "description": "Threat hunting job response data.", "properties": { "attributes": { - "description": "Historical job attributes.", + "description": "Threat hunting job attributes.", "properties": { "createdAt": { "description": "Time when the job was created.", @@ -695400,7 +695400,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -695944,7 +695944,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -696293,7 +696293,7 @@ "AuthZ": [] } ], - "summary": "List historical jobs", + "summary": "List threat hunting jobs", "tags": [ "Security Monitoring" ], @@ -696301,22 +696301,22 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." }, "post": { - "description": "Run a historical job.", - "operationId": "RunHistoricalJob", + "description": "Run a threat hunting job.", + "operationId": "RunThreatHuntingJob", "requestBody": { "content": { "application/json": { "schema": { - "description": "Run a historical job request.", + "description": "Run a threat hunting job request.", "properties": { "data": { - "description": "Data for running a historical job request.", + "description": "Data for running a threat hunting job request.", "properties": { "attributes": { - "description": "Run a historical job request.", + "description": "Run a threat hunting job request.", "properties": { "fromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -696364,7 +696364,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -696908,7 +696908,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -697138,7 +697138,7 @@ "content": { "application/json": { "schema": { - "description": "Run a historical job response.", + "description": "Run a threat hunting job response.", "properties": { "data": { "description": "The definition of `JobCreateResponseData` object.", @@ -697319,7 +697319,7 @@ ] } ], - "summary": "Run a historical job", + "summary": "Run a threat hunting job", "tags": [ "Security Monitoring" ], @@ -697334,7 +697334,7 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs/signal_convert": { + "/api/v2/siem-threat-hunting/jobs/signal_convert": { "post": { "description": "Convert a job result to a signal.", "operationId": "ConvertJobResultToSignal", @@ -697342,13 +697342,13 @@ "content": { "application/json": { "schema": { - "description": "Request for converting historical job results to signals.", + "description": "Request for converting threat hunting job results to signals.", "properties": { "data": { - "description": "Data for converting historical job results to signals.", + "description": "Data for converting threat hunting job results to signals.", "properties": { "attributes": { - "description": "Attributes for converting historical job results to signals.", + "description": "Attributes for converting threat hunting job results to signals.", "properties": { "id": { "description": "Request ID.", @@ -697587,10 +697587,10 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs/{job_id}": { + "/api/v2/siem-threat-hunting/jobs/{job_id}": { "delete": { "description": "Delete an existing job.", - "operationId": "DeleteHistoricalJob", + "operationId": "DeleteThreatHuntingJob", "parameters": [ { "description": "The ID of the job.", @@ -697793,7 +697793,7 @@ }, "get": { "description": "Get a job's details.", - "operationId": "GetHistoricalJob", + "operationId": "GetThreatHuntingJob", "parameters": [ { "description": "The ID of the job.", @@ -697810,13 +697810,13 @@ "content": { "application/json": { "schema": { - "description": "Historical job response.", + "description": "Threat hunting job response.", "properties": { "data": { - "description": "Historical job response data.", + "description": "Threat hunting job response data.", "properties": { "attributes": { - "description": "Historical job attributes.", + "description": "Threat hunting job attributes.", "properties": { "createdAt": { "description": "Time when the job was created.", @@ -697835,7 +697835,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -698379,7 +698379,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -698758,10 +698758,10 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs/{job_id}/cancel": { + "/api/v2/siem-threat-hunting/jobs/{job_id}/cancel": { "patch": { - "description": "Cancel a historical job.", - "operationId": "CancelHistoricalJob", + "description": "Cancel a threat hunting job.", + "operationId": "CancelThreatHuntingJob", "parameters": [ { "description": "The ID of the job.", @@ -698957,7 +698957,7 @@ ] } ], - "summary": "Cancel a historical job", + "summary": "Cancel a threat hunting job", "tags": [ "Security Monitoring" ], @@ -698971,7 +698971,7 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs/{job_id}/histsignals": { + "/api/v2/siem-threat-hunting/jobs/{job_id}/histsignals": { "get": { "description": "Get a job's hist signals.", "operationId": "GetSecurityMonitoringHistsignalsByJobId", diff --git a/data/api/v2/translate_actions.json b/data/api/v2/translate_actions.json index ef2cb986e0e7f..164f686c6d8d1 100644 --- a/data/api/v2/translate_actions.json +++ b/data/api/v2/translate_actions.json @@ -2815,33 +2815,33 @@ "description": "Get a hist signal's details.", "summary": "Get a hist signal's details" }, - "ListHistoricalJobs": { - "description": "List historical jobs.", - "summary": "List historical jobs" + "ListThreatHuntingJobs": { + "description": "List threat hunting jobs.", + "summary": "List threat hunting jobs" }, - "RunHistoricalJob": { - "description": "Run a historical job.", - "summary": "Run a historical job", + "RunThreatHuntingJob": { + "description": "Run a threat hunting job.", + "summary": "Run a threat hunting job", "request_description": "", - "request_schema_description": "Run a historical job request." + "request_schema_description": "Run a threat hunting job request." }, "ConvertJobResultToSignal": { "description": "Convert a job result to a signal.", "summary": "Convert a job result to a signal", "request_description": "", - "request_schema_description": "Request for converting historical job results to signals." + "request_schema_description": "Request for converting threat hunting job results to signals." }, - "DeleteHistoricalJob": { + "DeleteThreatHuntingJob": { "description": "Delete an existing job.", "summary": "Delete an existing job" }, - "GetHistoricalJob": { + "GetThreatHuntingJob": { "description": "Get a job's details.", "summary": "Get a job's details" }, - "CancelHistoricalJob": { - "description": "Cancel a historical job.", - "summary": "Cancel a historical job" + "CancelThreatHuntingJob": { + "description": "Cancel a threat hunting job.", + "summary": "Cancel a threat hunting job" }, "GetSecurityMonitoringHistsignalsByJobId": { "description": "Get a job's hist signals.", diff --git a/static/resources/json/full_spec_v2.json b/static/resources/json/full_spec_v2.json index 7f036619dbe0b..b9dc3816ef918 100644 --- a/static/resources/json/full_spec_v2.json +++ b/static/resources/json/full_spec_v2.json @@ -670,24 +670,6 @@ "type": "array" } }, - "HistoricalJobID": { - "description": "The ID of the job.", - "in": "path", - "name": "job_id", - "required": true, - "schema": { - "type": "string" - } - }, - "HistoricalSignalID": { - "description": "The ID of the historical signal.", - "in": "path", - "name": "histsignal_id", - "required": true, - "schema": { - "type": "string" - } - }, "IncidentAttachmentFilterQueryParameter": { "description": "Specifies which types of attachments are included in the response.", "explode": false, @@ -1590,6 +1572,24 @@ "type": "string" } }, + "ThreatHuntingJobID": { + "description": "The ID of the job.", + "in": "path", + "name": "job_id", + "required": true, + "schema": { + "type": "string" + } + }, + "ThreatHuntingSignalID": { + "description": "The ID of the threat hunting signal.", + "in": "path", + "name": "histsignal_id", + "required": true, + "schema": { + "type": "string" + } + }, "UserID": { "description": "The ID of the user.", "in": "path", @@ -72854,7 +72854,7 @@ ] }, "ConvertJobResultsToSignalsAttributes": { - "description": "Attributes for converting historical job results to signals.", + "description": "Attributes for converting threat hunting job results to signals.", "properties": { "id": { "description": "Request ID.", @@ -72914,10 +72914,10 @@ "type": "object" }, "ConvertJobResultsToSignalsData": { - "description": "Data for converting historical job results to signals.", + "description": "Data for converting threat hunting job results to signals.", "properties": { "attributes": { - "description": "Attributes for converting historical job results to signals.", + "description": "Attributes for converting threat hunting job results to signals.", "properties": { "id": { "description": "Request ID.", @@ -73000,13 +73000,13 @@ ] }, "ConvertJobResultsToSignalsRequest": { - "description": "Request for converting historical job results to signals.", + "description": "Request for converting threat hunting job results to signals.", "properties": { "data": { - "description": "Data for converting historical job results to signals.", + "description": "Data for converting threat hunting job results to signals.", "properties": { "attributes": { - "description": "Attributes for converting historical job results to signals.", + "description": "Attributes for converting threat hunting job results to signals.", "properties": { "id": { "description": "Request ID.", @@ -140096,336 +140096,450 @@ ], "type": "object" }, - "HistoricalJobDataType": { - "description": "Type of payload.", - "enum": [ - "historicalDetectionsJob" - ], - "type": "string", - "x-enum-varnames": [ - "HISTORICALDETECTIONSJOB" - ] - }, - "HistoricalJobListMeta": { - "description": "Metadata about the list of jobs.", - "properties": { - "totalCount": { - "description": "Number of jobs in the list.", - "format": "int32", - "maximum": 2147483647, - "type": "integer" - } - }, - "type": "object" - }, - "HistoricalJobOptions": { - "description": "Job options.", + "HourlyUsage": { + "description": "Hourly usage for a product family for an org.", "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", + "attributes": { + "description": "Attributes of hourly usage for a product family for an org for a time period.", "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" + "account_name": { + "description": "The account name.", + "type": "string" + }, + "account_public_id": { + "description": "The account public ID.", + "type": "string" + }, + "measurements": { + "description": "List of the measured usage values for the product family for the org for the time period.", + "items": { + "description": "Usage amount for a given usage type.", + "properties": { + "usage_type": { + "description": "Type of usage.", + "type": "string" + }, + "value": { + "description": "Contains the number measured for the given usage_type during the hour.", + "format": "int64", + "nullable": true, + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "org_name": { + "description": "The organization name.", + "type": "string" + }, + "product_family": { + "description": "The product for which usage is being reported.", + "type": "string" + }, + "public_id": { + "description": "The organization public ID.", + "type": "string" + }, + "region": { + "description": "The region of the Datadog instance that the organization belongs to.", + "type": "string" + }, + "timestamp": { + "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", + "format": "date-time", + "type": "string" } }, "type": "object" }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] + "id": { + "description": "Unique ID of the response.", + "type": "string" }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "type": { + "default": "usage_timeseries", + "description": "Type of usage data.", "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 + "usage_timeseries" ], - "format": "int32", - "type": "integer", + "example": "usage_timeseries", + "type": "string", "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" + "USAGE_TIMESERIES" ] + } + }, + "type": "object" + }, + "HourlyUsageAttributes": { + "description": "Attributes of hourly usage for a product family for an org for a time period.", + "properties": { + "account_name": { + "description": "The account name.", + "type": "string" }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] + "account_public_id": { + "description": "The account public ID.", + "type": "string" + }, + "measurements": { + "description": "List of the measured usage values for the product family for the org for the time period.", + "items": { + "description": "Usage amount for a given usage type.", + "properties": { + "usage_type": { + "description": "Type of usage.", + "type": "string" + }, + "value": { + "description": "Contains the number measured for the given usage_type during the hour.", + "format": "int64", + "nullable": true, + "type": "integer" + } }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } + "type": "object" }, - "type": "object" + "type": "array" }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", + "org_name": { + "description": "The organization name.", + "type": "string" + }, + "product_family": { + "description": "The product for which usage is being reported.", + "type": "string" + }, + "public_id": { + "description": "The organization public ID.", + "type": "string" + }, + "region": { + "description": "The region of the Datadog instance that the organization belongs to.", + "type": "string" + }, + "timestamp": { + "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "HourlyUsageMeasurement": { + "description": "Usage amount for a given usage type.", + "properties": { + "usage_type": { + "description": "Type of usage.", + "type": "string" + }, + "value": { + "description": "Contains the number measured for the given usage_type during the hour.", + "format": "int64", + "nullable": true, + "type": "integer" + } + }, + "type": "object" + }, + "HourlyUsageMetadata": { + "description": "The object containing document metadata.", + "properties": { + "pagination": { + "description": "The metadata for the current pagination.", "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", + "next_record_id": { + "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", + "nullable": true, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "HourlyUsagePagination": { + "description": "The metadata for the current pagination.", + "properties": { + "next_record_id": { + "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "HourlyUsageResponse": { + "description": "Hourly usage response.", + "properties": { + "data": { + "description": "Response containing hourly usage.", + "items": { + "description": "Hourly usage for a product family for an org.", + "properties": { + "attributes": { + "description": "Attributes of hourly usage for a product family for an org for a time period.", "properties": { - "child": { - "description": "Name of the child step.", + "account_name": { + "description": "The account name.", "type": "string" }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] + "account_public_id": { + "description": "The account public ID.", + "type": "string" }, - "parent": { - "description": "Name of the parent step.", + "measurements": { + "description": "List of the measured usage values for the product family for the org for the time period.", + "items": { + "description": "Usage amount for a given usage type.", + "properties": { + "usage_type": { + "description": "Type of usage.", + "type": "string" + }, + "value": { + "description": "Contains the number measured for the given usage_type during the hour.", + "format": "int64", + "nullable": true, + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "org_name": { + "description": "The organization name.", + "type": "string" + }, + "product_family": { + "description": "The product for which usage is being reported.", + "type": "string" + }, + "public_id": { + "description": "The organization public ID.", + "type": "string" + }, + "region": { + "description": "The region of the Datadog instance that the organization belongs to.", + "type": "string" + }, + "timestamp": { + "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", + "format": "date-time", "type": "string" } }, "type": "object" }, - "type": "array" + "id": { + "description": "Unique ID of the response.", + "type": "string" + }, + "type": { + "default": "usage_timeseries", + "description": "Type of usage data.", + "enum": [ + "usage_timeseries" + ], + "example": "usage_timeseries", + "type": "string", + "x-enum-varnames": [ + "USAGE_TIMESERIES" + ] + } }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "The object containing document metadata.", + "properties": { + "pagination": { + "description": "The metadata for the current pagination.", + "properties": { + "next_record_id": { + "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", + "nullable": true, + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "HourlyUsageType": { + "description": "Usage type that is being measured.", + "enum": [ + "app_sec_host_count", + "observability_pipelines_bytes_processed", + "lambda_traced_invocations_count" + ], + "example": "observability_pipelines_bytes_processed", + "type": "string", + "x-enum-varnames": [ + "APP_SEC_HOST_COUNT", + "OBSERVABILITY_PIPELINES_BYTES_PROCESSSED", + "LAMBDA_TRACED_INVOCATIONS_COUNT" + ] + }, + "ID": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "IPAllowlistAttributes": { + "description": "Attributes of the IP allowlist.", + "properties": { + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean" + }, + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The unique identifier of the IP allowlist entry.", "type": "string" }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 + "ip_allowlist_entry" ], - "format": "int32", - "type": "integer", + "example": "ip_allowlist_entry", + "type": "string", "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" + "IP_ALLOWLIST_ENTRY" ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" } }, + "required": [ + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "IPAllowlistData": { + "description": "IP allowlist data.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist.", + "properties": { + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean" + }, + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The unique identifier of the IP allowlist entry.", + "type": "string" + }, + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", + "enum": [ + "ip_allowlist_entry" + ], + "example": "ip_allowlist_entry", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST_ENTRY" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], "type": "object" }, "type": "array" @@ -140433,3490 +140547,494 @@ }, "type": "object" }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", + "id": { + "description": "The unique identifier of the org.", + "type": "string" + }, + "type": { + "default": "ip_allowlist", + "description": "IP allowlist type.", + "enum": [ + "ip_allowlist" + ], + "example": "ip_allowlist", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "IPAllowlistEntry": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", - "type": "string" + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } }, - "type": "array" + "type": "object" }, - "defaultStatus": { - "description": "Severity of the Security Signal.", + "id": { + "description": "The unique identifier of the IP allowlist entry.", + "type": "string" + }, + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", "enum": [ - "info", - "low", - "medium", - "high", - "critical" + "ip_allowlist_entry" ], - "example": "critical", + "example": "ip_allowlist_entry", "type": "string", "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" + "IP_ALLOWLIST_ENTRY" ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" } }, + "required": [ + "type" + ], "type": "object" } }, + "required": [ + "data" + ], "type": "object" }, - "HistoricalJobQuery": { - "description": "Query for selecting logs analyzed by the historical job.", + "IPAllowlistEntryAttributes": { + "description": "Attributes of the IP allowlist entry.", "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } + }, + "type": "object" + }, + "IPAllowlistEntryData": { + "description": "Data of the IP allowlist entry object.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } }, - "type": "array" + "type": "object" }, - "name": { - "description": "Name of the query.", + "id": { + "description": "The unique identifier of the IP allowlist entry.", "type": "string" }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", + "enum": [ + "ip_allowlist_entry" + ], + "example": "ip_allowlist_entry", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST_ENTRY" + ] } }, + "required": [ + "type" + ], "type": "object" }, - "HistoricalJobResponse": { - "description": "Historical job response.", + "IPAllowlistEntryType": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", + "enum": [ + "ip_allowlist_entry" + ], + "example": "ip_allowlist_entry", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST_ENTRY" + ] + }, + "IPAllowlistResponse": { + "description": "Response containing information about the IP allowlist.", "properties": { "data": { - "description": "Historical job response data.", + "description": "IP allowlist data.", "properties": { "attributes": { - "description": "Historical job attributes.", + "description": "Attributes of the IP allowlist.", "properties": { - "createdAt": { - "description": "Time when the job was created.", - "type": "string" - }, - "createdByHandle": { - "description": "The handle of the user who created the job.", - "type": "string" - }, - "createdByName": { - "description": "The name of the user who created the job.", - "type": "string" - }, - "createdFromRuleId": { - "description": "ID of the rule used to create the job (if it is created from a rule).", - "type": "string" + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean" }, - "jobDefinition": { - "description": "Definition of a historical job.", - "properties": { - "calculatedFields": { - "description": "Calculated fields.", - "items": { - "description": "Calculated field.", - "properties": { - "expression": { - "description": "Expression.", - "example": "@request_end_timestamp - @request_start_timestamp", - "type": "string" - }, - "name": { - "description": "Field name.", - "example": "response_time", - "type": "string" - } - }, - "required": [ - "name", - "expression" - ], - "type": "object" - }, - "type": "array" - }, - "cases": { - "description": "Cases used for generating job results.", - "items": { - "description": "Case when signal is generated.", + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", "properties": { - "actions": { - "description": "Action to perform for each rule case.", - "items": { - "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", - "properties": { - "options": { - "additionalProperties": {}, - "description": "Options for the rule action", - "properties": { - "duration": { - "description": "Duration of the action in seconds. 0 indicates no expiration.", - "example": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "flaggedIPType": { - "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", - "enum": [ - "SUSPICIOUS", - "FLAGGED" - ], - "example": "FLAGGED", - "type": "string", - "x-enum-varnames": [ - "SUSPICIOUS", - "FLAGGED" - ] - }, - "userBehaviorName": { - "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "description": "The action type.", - "enum": [ - "block_ip", - "block_user", - "user_behavior", - "flag_ip" - ], - "type": "string", - "x-enum-varnames": [ - "BLOCK_IP", - "BLOCK_USER", - "USER_BEHAVIOR", - "FLAG_IP" - ] - } + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" }, - "type": "object" + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } }, - "type": "array" - }, - "condition": { - "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", - "type": "string" + "type": "object" }, - "name": { - "description": "Name of the case.", + "id": { + "description": "The unique identifier of the IP allowlist entry.", "type": "string" }, - "notifications": { - "description": "Notification targets.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "Severity of the Security Signal.", + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", "enum": [ - "info", - "low", - "medium", - "high", - "critical" + "ip_allowlist_entry" ], - "example": "critical", + "example": "ip_allowlist_entry", "type": "string", "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" + "IP_ALLOWLIST_ENTRY" ] } }, "required": [ - "status" + "type" ], "type": "object" - }, - "type": "array" - }, - "from": { - "description": "Starting time of data analyzed by the job.", - "example": 1729843470000, - "format": "int64", - "type": "integer" - }, - "groupSignalsBy": { - "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", - "example": [ - "service" - ], - "items": { - "description": "Field to group by.", - "type": "string" - }, - "type": "array" - }, - "index": { - "description": "Index used to load the data.", - "example": "cloud_siem", - "type": "string" - }, - "message": { - "description": "Message for generated results.", - "example": "A large number of failed login attempts.", - "type": "string" - }, - "name": { - "description": "Job name.", - "example": "Excessive number of failed attempts.", - "type": "string" + } }, - "options": { - "description": "Job options.", - "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", - "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] - }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } - }, - "type": "object" - }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", - "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", - "properties": { - "child": { - "description": "Name of the child step.", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "parent": { - "description": "Name of the parent step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", - "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" - } - }, - "type": "object" + "required": [ + "data" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The unique identifier of the org.", + "type": "string" + }, + "type": { + "default": "ip_allowlist", + "description": "IP allowlist type.", + "enum": [ + "ip_allowlist" + ], + "example": "ip_allowlist", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + } + }, + "type": "object" + }, + "IPAllowlistType": { + "default": "ip_allowlist", + "description": "IP allowlist type.", + "enum": [ + "ip_allowlist" + ], + "example": "ip_allowlist", + "type": "string", + "x-enum-varnames": [ + "IP_ALLOWLIST" + ] + }, + "IPAllowlistUpdateRequest": { + "description": "Update the IP allowlist.", + "properties": { + "data": { + "description": "IP allowlist data.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist.", + "properties": { + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean" + }, + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist entry.", + "properties": { + "cidr_block": { + "description": "The CIDR block describing the IP range of the entry.", + "type": "string" }, - "type": "array" - } - }, - "type": "object" - }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", - "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", + "created_at": { + "description": "Creation time of the entry.", + "format": "date-time", + "readOnly": true, "type": "string" }, - "type": "array" - }, - "defaultStatus": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" + "modified_at": { + "description": "Time of last entry modification.", + "format": "date-time", + "readOnly": true, + "type": "string" }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "queries": { - "description": "Queries for selecting logs analyzed by the job.", - "items": { - "description": "Query for selecting logs analyzed by the historical job.", - "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" - }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Name of the query.", - "type": "string" - }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "referenceTables": { - "description": "Reference tables used in the queries.", - "items": { - "description": "Reference tables used in the queries.", - "properties": { - "checkPresence": { - "description": "Whether to include or exclude the matched values.", - "type": "boolean" - }, - "columnName": { - "description": "The name of the column in the reference table.", - "type": "string" - }, - "logFieldPath": { - "description": "The field in the log to match against the reference table.", - "type": "string" - }, - "ruleQueryName": { - "description": "The name of the query to apply the reference table to.", - "type": "string" - }, - "tableName": { - "description": "The name of the reference table.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tags": { - "description": "Tags for generated signals.", - "items": { - "type": "string" - }, - "type": "array" - }, - "thirdPartyCases": { - "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", - "example": [], - "items": { - "description": "Case when a signal is generated by a third party rule.", - "properties": { - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets for each case.", - "items": { - "description": "Notification.", - "type": "string" + "note": { + "description": "A note describing the IP allowlist entry.", + "type": "string" + } }, - "type": "array" + "type": "object" }, - "query": { - "description": "A query to map a third party event to this case.", + "id": { + "description": "The unique identifier of the IP allowlist entry.", "type": "string" }, - "status": { - "description": "Severity of the Security Signal.", + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", "enum": [ - "info", - "low", - "medium", - "high", - "critical" + "ip_allowlist_entry" ], - "example": "critical", + "example": "ip_allowlist_entry", "type": "string", "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" + "IP_ALLOWLIST_ENTRY" ] } }, "required": [ - "status" + "type" ], "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Ending time of data analyzed by the job.", - "example": 1729847070000, - "format": "int64", - "type": "integer" + } }, - "type": { - "description": "Job type.", - "type": "string" - } + "required": [ + "data" + ], + "type": "object" }, - "required": [ - "from", - "to", - "index", - "name", - "cases", - "queries", - "message" - ], - "type": "object" - }, - "jobName": { - "description": "Job name.", - "type": "string" - }, - "jobStatus": { - "description": "Job status.", - "type": "string" - }, - "modifiedAt": { - "description": "Last modification time of the job.", - "type": "string" + "type": "array" } }, "type": "object" }, "id": { - "description": "ID of the job.", + "description": "The unique identifier of the org.", "type": "string" }, "type": { - "description": "Type of payload.", + "default": "ip_allowlist", + "description": "IP allowlist type.", "enum": [ - "historicalDetectionsJob" + "ip_allowlist" ], + "example": "ip_allowlist", "type": "string", "x-enum-varnames": [ - "HISTORICALDETECTIONSJOB" + "IP_ALLOWLIST" ] } }, + "required": [ + "type" + ], "type": "object" } }, + "required": [ + "data" + ], "type": "object" }, - "HistoricalJobResponseAttributes": { - "description": "Historical job attributes.", + "IdPMetadataFormData": { + "description": "The form data submitted to upload IdP metadata", "properties": { - "createdAt": { - "description": "Time when the job was created.", - "type": "string" - }, - "createdByHandle": { - "description": "The handle of the user who created the job.", - "type": "string" - }, - "createdByName": { - "description": "The name of the user who created the job.", - "type": "string" - }, - "createdFromRuleId": { - "description": "ID of the rule used to create the job (if it is created from a rule).", - "type": "string" + "idp_file": { + "description": "The IdP metadata XML file", + "format": "binary", + "type": "string", + "x-mimetype": "application/xml" + } + }, + "type": "object" + }, + "IncidentAttachmentAttachmentType": { + "description": "The type of the incident attachment attributes.", + "enum": [ + "link", + "postmortem" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK", + "POSTMORTEM" + ] + }, + "IncidentAttachmentAttributes": { + "description": "The attributes object for an attachment.", + "oneOf": [ + { + "description": "The attributes object for a postmortem attachment.", + "properties": { + "attachment": { + "description": "The postmortem attachment.", + "properties": { + "documentUrl": { + "description": "The URL of this notebook attachment.", + "example": "https://app.datadoghq.com/notebook/123", + "type": "string" + }, + "title": { + "description": "The title of this postmortem attachment.", + "example": "Postmortem IR-123", + "type": "string" + } + }, + "required": [ + "documentUrl", + "title" + ], + "type": "object" + }, + "attachment_type": { + "default": "postmortem", + "description": "The type of postmortem attachment attributes.", + "enum": [ + "postmortem" + ], + "example": "postmortem", + "type": "string", + "x-enum-varnames": [ + "POSTMORTEM" + ] + } + }, + "required": [ + "attachment_type", + "attachment" + ], + "type": "object" }, - "jobDefinition": { - "description": "Definition of a historical job.", + { + "description": "The attributes object for a link attachment.", "properties": { - "calculatedFields": { - "description": "Calculated fields.", - "items": { - "description": "Calculated field.", - "properties": { - "expression": { - "description": "Expression.", - "example": "@request_end_timestamp - @request_start_timestamp", - "type": "string" - }, - "name": { - "description": "Field name.", - "example": "response_time", - "type": "string" - } + "attachment": { + "description": "The link attachment.", + "properties": { + "documentUrl": { + "description": "The URL of this link attachment.", + "example": "https://www.example.com/webstore-failure-runbook", + "type": "string" }, - "required": [ - "name", - "expression" - ], - "type": "object" + "title": { + "description": "The title of this link attachment.", + "example": "Runbook for webstore service failures", + "type": "string" + } }, - "type": "array" - }, - "cases": { - "description": "Cases used for generating job results.", - "items": { - "description": "Case when signal is generated.", - "properties": { - "actions": { - "description": "Action to perform for each rule case.", - "items": { - "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", - "properties": { - "options": { - "additionalProperties": {}, - "description": "Options for the rule action", - "properties": { - "duration": { - "description": "Duration of the action in seconds. 0 indicates no expiration.", - "example": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "flaggedIPType": { - "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", - "enum": [ - "SUSPICIOUS", - "FLAGGED" - ], - "example": "FLAGGED", - "type": "string", - "x-enum-varnames": [ - "SUSPICIOUS", - "FLAGGED" - ] - }, - "userBehaviorName": { - "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "description": "The action type.", - "enum": [ - "block_ip", - "block_user", - "user_behavior", - "flag_ip" - ], - "type": "string", - "x-enum-varnames": [ - "BLOCK_IP", - "BLOCK_USER", - "USER_BEHAVIOR", - "FLAG_IP" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "condition": { - "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", - "type": "string" - }, - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "from": { - "description": "Starting time of data analyzed by the job.", - "example": 1729843470000, - "format": "int64", - "type": "integer" - }, - "groupSignalsBy": { - "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", - "example": [ - "service" - ], - "items": { - "description": "Field to group by.", - "type": "string" - }, - "type": "array" - }, - "index": { - "description": "Index used to load the data.", - "example": "cloud_siem", - "type": "string" - }, - "message": { - "description": "Message for generated results.", - "example": "A large number of failed login attempts.", - "type": "string" - }, - "name": { - "description": "Job name.", - "example": "Excessive number of failed attempts.", - "type": "string" - }, - "options": { - "description": "Job options.", - "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", - "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] - }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } - }, - "type": "object" - }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", - "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", - "properties": { - "child": { - "description": "Name of the child step.", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "parent": { - "description": "Name of the parent step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", - "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", - "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "defaultStatus": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "queries": { - "description": "Queries for selecting logs analyzed by the job.", - "items": { - "description": "Query for selecting logs analyzed by the historical job.", - "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" - }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Name of the query.", - "type": "string" - }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "referenceTables": { - "description": "Reference tables used in the queries.", - "items": { - "description": "Reference tables used in the queries.", - "properties": { - "checkPresence": { - "description": "Whether to include or exclude the matched values.", - "type": "boolean" - }, - "columnName": { - "description": "The name of the column in the reference table.", - "type": "string" - }, - "logFieldPath": { - "description": "The field in the log to match against the reference table.", - "type": "string" - }, - "ruleQueryName": { - "description": "The name of the query to apply the reference table to.", - "type": "string" - }, - "tableName": { - "description": "The name of the reference table.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tags": { - "description": "Tags for generated signals.", - "items": { - "type": "string" - }, - "type": "array" - }, - "thirdPartyCases": { - "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", - "example": [], - "items": { - "description": "Case when a signal is generated by a third party rule.", - "properties": { - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets for each case.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "A query to map a third party event to this case.", - "type": "string" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Ending time of data analyzed by the job.", - "example": 1729847070000, - "format": "int64", - "type": "integer" - }, - "type": { - "description": "Job type.", - "type": "string" - } - }, - "required": [ - "from", - "to", - "index", - "name", - "cases", - "queries", - "message" - ], - "type": "object" - }, - "jobName": { - "description": "Job name.", - "type": "string" - }, - "jobStatus": { - "description": "Job status.", - "type": "string" - }, - "modifiedAt": { - "description": "Last modification time of the job.", - "type": "string" - } - }, - "type": "object" - }, - "HistoricalJobResponseData": { - "description": "Historical job response data.", - "properties": { - "attributes": { - "description": "Historical job attributes.", - "properties": { - "createdAt": { - "description": "Time when the job was created.", - "type": "string" - }, - "createdByHandle": { - "description": "The handle of the user who created the job.", - "type": "string" - }, - "createdByName": { - "description": "The name of the user who created the job.", - "type": "string" - }, - "createdFromRuleId": { - "description": "ID of the rule used to create the job (if it is created from a rule).", - "type": "string" - }, - "jobDefinition": { - "description": "Definition of a historical job.", - "properties": { - "calculatedFields": { - "description": "Calculated fields.", - "items": { - "description": "Calculated field.", - "properties": { - "expression": { - "description": "Expression.", - "example": "@request_end_timestamp - @request_start_timestamp", - "type": "string" - }, - "name": { - "description": "Field name.", - "example": "response_time", - "type": "string" - } - }, - "required": [ - "name", - "expression" - ], - "type": "object" - }, - "type": "array" - }, - "cases": { - "description": "Cases used for generating job results.", - "items": { - "description": "Case when signal is generated.", - "properties": { - "actions": { - "description": "Action to perform for each rule case.", - "items": { - "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", - "properties": { - "options": { - "additionalProperties": {}, - "description": "Options for the rule action", - "properties": { - "duration": { - "description": "Duration of the action in seconds. 0 indicates no expiration.", - "example": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "flaggedIPType": { - "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", - "enum": [ - "SUSPICIOUS", - "FLAGGED" - ], - "example": "FLAGGED", - "type": "string", - "x-enum-varnames": [ - "SUSPICIOUS", - "FLAGGED" - ] - }, - "userBehaviorName": { - "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "description": "The action type.", - "enum": [ - "block_ip", - "block_user", - "user_behavior", - "flag_ip" - ], - "type": "string", - "x-enum-varnames": [ - "BLOCK_IP", - "BLOCK_USER", - "USER_BEHAVIOR", - "FLAG_IP" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "condition": { - "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", - "type": "string" - }, - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "from": { - "description": "Starting time of data analyzed by the job.", - "example": 1729843470000, - "format": "int64", - "type": "integer" - }, - "groupSignalsBy": { - "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", - "example": [ - "service" - ], - "items": { - "description": "Field to group by.", - "type": "string" - }, - "type": "array" - }, - "index": { - "description": "Index used to load the data.", - "example": "cloud_siem", - "type": "string" - }, - "message": { - "description": "Message for generated results.", - "example": "A large number of failed login attempts.", - "type": "string" - }, - "name": { - "description": "Job name.", - "example": "Excessive number of failed attempts.", - "type": "string" - }, - "options": { - "description": "Job options.", - "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", - "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] - }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } - }, - "type": "object" - }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", - "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", - "properties": { - "child": { - "description": "Name of the child step.", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "parent": { - "description": "Name of the parent step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", - "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", - "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "defaultStatus": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "queries": { - "description": "Queries for selecting logs analyzed by the job.", - "items": { - "description": "Query for selecting logs analyzed by the historical job.", - "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" - }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Name of the query.", - "type": "string" - }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "referenceTables": { - "description": "Reference tables used in the queries.", - "items": { - "description": "Reference tables used in the queries.", - "properties": { - "checkPresence": { - "description": "Whether to include or exclude the matched values.", - "type": "boolean" - }, - "columnName": { - "description": "The name of the column in the reference table.", - "type": "string" - }, - "logFieldPath": { - "description": "The field in the log to match against the reference table.", - "type": "string" - }, - "ruleQueryName": { - "description": "The name of the query to apply the reference table to.", - "type": "string" - }, - "tableName": { - "description": "The name of the reference table.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tags": { - "description": "Tags for generated signals.", - "items": { - "type": "string" - }, - "type": "array" - }, - "thirdPartyCases": { - "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", - "example": [], - "items": { - "description": "Case when a signal is generated by a third party rule.", - "properties": { - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets for each case.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "A query to map a third party event to this case.", - "type": "string" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Ending time of data analyzed by the job.", - "example": 1729847070000, - "format": "int64", - "type": "integer" - }, - "type": { - "description": "Job type.", - "type": "string" - } - }, - "required": [ - "from", - "to", - "index", - "name", - "cases", - "queries", - "message" - ], - "type": "object" - }, - "jobName": { - "description": "Job name.", - "type": "string" - }, - "jobStatus": { - "description": "Job status.", - "type": "string" - }, - "modifiedAt": { - "description": "Last modification time of the job.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the job.", - "type": "string" - }, - "type": { - "description": "Type of payload.", - "enum": [ - "historicalDetectionsJob" - ], - "type": "string", - "x-enum-varnames": [ - "HISTORICALDETECTIONSJOB" - ] - } - }, - "type": "object" - }, - "HourlyUsage": { - "description": "Hourly usage for a product family for an org.", - "properties": { - "attributes": { - "description": "Attributes of hourly usage for a product family for an org for a time period.", - "properties": { - "account_name": { - "description": "The account name.", - "type": "string" - }, - "account_public_id": { - "description": "The account public ID.", - "type": "string" - }, - "measurements": { - "description": "List of the measured usage values for the product family for the org for the time period.", - "items": { - "description": "Usage amount for a given usage type.", - "properties": { - "usage_type": { - "description": "Type of usage.", - "type": "string" - }, - "value": { - "description": "Contains the number measured for the given usage_type during the hour.", - "format": "int64", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "org_name": { - "description": "The organization name.", - "type": "string" - }, - "product_family": { - "description": "The product for which usage is being reported.", - "type": "string" - }, - "public_id": { - "description": "The organization public ID.", - "type": "string" - }, - "region": { - "description": "The region of the Datadog instance that the organization belongs to.", - "type": "string" - }, - "timestamp": { - "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "Unique ID of the response.", - "type": "string" - }, - "type": { - "default": "usage_timeseries", - "description": "Type of usage data.", - "enum": [ - "usage_timeseries" - ], - "example": "usage_timeseries", - "type": "string", - "x-enum-varnames": [ - "USAGE_TIMESERIES" - ] - } - }, - "type": "object" - }, - "HourlyUsageAttributes": { - "description": "Attributes of hourly usage for a product family for an org for a time period.", - "properties": { - "account_name": { - "description": "The account name.", - "type": "string" - }, - "account_public_id": { - "description": "The account public ID.", - "type": "string" - }, - "measurements": { - "description": "List of the measured usage values for the product family for the org for the time period.", - "items": { - "description": "Usage amount for a given usage type.", - "properties": { - "usage_type": { - "description": "Type of usage.", - "type": "string" - }, - "value": { - "description": "Contains the number measured for the given usage_type during the hour.", - "format": "int64", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "org_name": { - "description": "The organization name.", - "type": "string" - }, - "product_family": { - "description": "The product for which usage is being reported.", - "type": "string" - }, - "public_id": { - "description": "The organization public ID.", - "type": "string" - }, - "region": { - "description": "The region of the Datadog instance that the organization belongs to.", - "type": "string" - }, - "timestamp": { - "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "HourlyUsageMeasurement": { - "description": "Usage amount for a given usage type.", - "properties": { - "usage_type": { - "description": "Type of usage.", - "type": "string" - }, - "value": { - "description": "Contains the number measured for the given usage_type during the hour.", - "format": "int64", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "HourlyUsageMetadata": { - "description": "The object containing document metadata.", - "properties": { - "pagination": { - "description": "The metadata for the current pagination.", - "properties": { - "next_record_id": { - "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", - "nullable": true, - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "HourlyUsagePagination": { - "description": "The metadata for the current pagination.", - "properties": { - "next_record_id": { - "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", - "nullable": true, - "type": "string" - } - }, - "type": "object" - }, - "HourlyUsageResponse": { - "description": "Hourly usage response.", - "properties": { - "data": { - "description": "Response containing hourly usage.", - "items": { - "description": "Hourly usage for a product family for an org.", - "properties": { - "attributes": { - "description": "Attributes of hourly usage for a product family for an org for a time period.", - "properties": { - "account_name": { - "description": "The account name.", - "type": "string" - }, - "account_public_id": { - "description": "The account public ID.", - "type": "string" - }, - "measurements": { - "description": "List of the measured usage values for the product family for the org for the time period.", - "items": { - "description": "Usage amount for a given usage type.", - "properties": { - "usage_type": { - "description": "Type of usage.", - "type": "string" - }, - "value": { - "description": "Contains the number measured for the given usage_type during the hour.", - "format": "int64", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "org_name": { - "description": "The organization name.", - "type": "string" - }, - "product_family": { - "description": "The product for which usage is being reported.", - "type": "string" - }, - "public_id": { - "description": "The organization public ID.", - "type": "string" - }, - "region": { - "description": "The region of the Datadog instance that the organization belongs to.", - "type": "string" - }, - "timestamp": { - "description": "Datetime in ISO-8601 format, UTC. The hour for the usage.", - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "Unique ID of the response.", - "type": "string" - }, - "type": { - "default": "usage_timeseries", - "description": "Type of usage data.", - "enum": [ - "usage_timeseries" - ], - "example": "usage_timeseries", - "type": "string", - "x-enum-varnames": [ - "USAGE_TIMESERIES" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "meta": { - "description": "The object containing document metadata.", - "properties": { - "pagination": { - "description": "The metadata for the current pagination.", - "properties": { - "next_record_id": { - "description": "The cursor to get the next results (if any). To make the next request, use the same parameters and add `next_record_id`.", - "nullable": true, - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "HourlyUsageType": { - "description": "Usage type that is being measured.", - "enum": [ - "app_sec_host_count", - "observability_pipelines_bytes_processed", - "lambda_traced_invocations_count" - ], - "example": "observability_pipelines_bytes_processed", - "type": "string", - "x-enum-varnames": [ - "APP_SEC_HOST_COUNT", - "OBSERVABILITY_PIPELINES_BYTES_PROCESSSED", - "LAMBDA_TRACED_INVOCATIONS_COUNT" - ] - }, - "ID": { - "description": "The ID of a notification rule.", - "example": "aaa-bbb-ccc", - "type": "string" - }, - "IPAllowlistAttributes": { - "description": "Attributes of the IP allowlist.", - "properties": { - "enabled": { - "description": "Whether the IP allowlist logic is enabled or not.", - "type": "boolean" - }, - "entries": { - "description": "Array of entries in the IP allowlist.", - "items": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "IPAllowlistData": { - "description": "IP allowlist data.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist.", - "properties": { - "enabled": { - "description": "Whether the IP allowlist logic is enabled or not.", - "type": "boolean" - }, - "entries": { - "description": "Array of entries in the IP allowlist.", - "items": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the org.", - "type": "string" - }, - "type": { - "default": "ip_allowlist", - "description": "IP allowlist type.", - "enum": [ - "ip_allowlist" - ], - "example": "ip_allowlist", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - }, - "IPAllowlistEntry": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "IPAllowlistEntryAttributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "IPAllowlistEntryData": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - }, - "IPAllowlistEntryType": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - }, - "IPAllowlistResponse": { - "description": "Response containing information about the IP allowlist.", - "properties": { - "data": { - "description": "IP allowlist data.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist.", - "properties": { - "enabled": { - "description": "Whether the IP allowlist logic is enabled or not.", - "type": "boolean" - }, - "entries": { - "description": "Array of entries in the IP allowlist.", - "items": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the org.", - "type": "string" - }, - "type": { - "default": "ip_allowlist", - "description": "IP allowlist type.", - "enum": [ - "ip_allowlist" - ], - "example": "ip_allowlist", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "type": "object" - }, - "IPAllowlistType": { - "default": "ip_allowlist", - "description": "IP allowlist type.", - "enum": [ - "ip_allowlist" - ], - "example": "ip_allowlist", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST" - ] - }, - "IPAllowlistUpdateRequest": { - "description": "Update the IP allowlist.", - "properties": { - "data": { - "description": "IP allowlist data.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist.", - "properties": { - "enabled": { - "description": "Whether the IP allowlist logic is enabled or not.", - "type": "boolean" - }, - "entries": { - "description": "Array of entries in the IP allowlist.", - "items": { - "description": "IP allowlist entry object.", - "properties": { - "data": { - "description": "Data of the IP allowlist entry object.", - "properties": { - "attributes": { - "description": "Attributes of the IP allowlist entry.", - "properties": { - "cidr_block": { - "description": "The CIDR block describing the IP range of the entry.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the entry.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last entry modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "note": { - "description": "A note describing the IP allowlist entry.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the IP allowlist entry.", - "type": "string" - }, - "type": { - "default": "ip_allowlist_entry", - "description": "IP allowlist Entry type.", - "enum": [ - "ip_allowlist_entry" - ], - "example": "ip_allowlist_entry", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST_ENTRY" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the org.", - "type": "string" - }, - "type": { - "default": "ip_allowlist", - "description": "IP allowlist type.", - "enum": [ - "ip_allowlist" - ], - "example": "ip_allowlist", - "type": "string", - "x-enum-varnames": [ - "IP_ALLOWLIST" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "IdPMetadataFormData": { - "description": "The form data submitted to upload IdP metadata", - "properties": { - "idp_file": { - "description": "The IdP metadata XML file", - "format": "binary", - "type": "string", - "x-mimetype": "application/xml" - } - }, - "type": "object" - }, - "IncidentAttachmentAttachmentType": { - "description": "The type of the incident attachment attributes.", - "enum": [ - "link", - "postmortem" - ], - "example": "link", - "type": "string", - "x-enum-varnames": [ - "LINK", - "POSTMORTEM" - ] - }, - "IncidentAttachmentAttributes": { - "description": "The attributes object for an attachment.", - "oneOf": [ - { - "description": "The attributes object for a postmortem attachment.", - "properties": { - "attachment": { - "description": "The postmortem attachment.", - "properties": { - "documentUrl": { - "description": "The URL of this notebook attachment.", - "example": "https://app.datadoghq.com/notebook/123", - "type": "string" - }, - "title": { - "description": "The title of this postmortem attachment.", - "example": "Postmortem IR-123", - "type": "string" - } - }, - "required": [ - "documentUrl", - "title" - ], - "type": "object" - }, - "attachment_type": { - "default": "postmortem", - "description": "The type of postmortem attachment attributes.", - "enum": [ - "postmortem" - ], - "example": "postmortem", - "type": "string", - "x-enum-varnames": [ - "POSTMORTEM" - ] - } - }, - "required": [ - "attachment_type", - "attachment" - ], - "type": "object" - }, - { - "description": "The attributes object for a link attachment.", - "properties": { - "attachment": { - "description": "The link attachment.", - "properties": { - "documentUrl": { - "description": "The URL of this link attachment.", - "example": "https://www.example.com/webstore-failure-runbook", - "type": "string" - }, - "title": { - "description": "The title of this link attachment.", - "example": "Runbook for webstore service failures", - "type": "string" - } - }, - "required": [ - "documentUrl", - "title" - ], - "type": "object" + "required": [ + "documentUrl", + "title" + ], + "type": "object" }, "attachment_type": { "default": "link", @@ -181807,7 +178925,7 @@ "type": "object" }, "JobCreateResponse": { - "description": "Run a historical job response.", + "description": "Run a threat hunting job response.", "properties": { "data": { "description": "The definition of `JobCreateResponseData` object.", @@ -181853,7 +178971,7 @@ "type": "object" }, "JobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -182397,7 +179515,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -182600,7 +179718,7 @@ "type": "object" }, "JobDefinitionFromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -193561,829 +190679,6 @@ ], "type": "object" }, - "ListHistoricalJobsResponse": { - "description": "List of historical jobs.", - "properties": { - "data": { - "description": "Array containing the list of historical jobs.", - "items": { - "description": "Historical job response data.", - "properties": { - "attributes": { - "description": "Historical job attributes.", - "properties": { - "createdAt": { - "description": "Time when the job was created.", - "type": "string" - }, - "createdByHandle": { - "description": "The handle of the user who created the job.", - "type": "string" - }, - "createdByName": { - "description": "The name of the user who created the job.", - "type": "string" - }, - "createdFromRuleId": { - "description": "ID of the rule used to create the job (if it is created from a rule).", - "type": "string" - }, - "jobDefinition": { - "description": "Definition of a historical job.", - "properties": { - "calculatedFields": { - "description": "Calculated fields.", - "items": { - "description": "Calculated field.", - "properties": { - "expression": { - "description": "Expression.", - "example": "@request_end_timestamp - @request_start_timestamp", - "type": "string" - }, - "name": { - "description": "Field name.", - "example": "response_time", - "type": "string" - } - }, - "required": [ - "name", - "expression" - ], - "type": "object" - }, - "type": "array" - }, - "cases": { - "description": "Cases used for generating job results.", - "items": { - "description": "Case when signal is generated.", - "properties": { - "actions": { - "description": "Action to perform for each rule case.", - "items": { - "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", - "properties": { - "options": { - "additionalProperties": {}, - "description": "Options for the rule action", - "properties": { - "duration": { - "description": "Duration of the action in seconds. 0 indicates no expiration.", - "example": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - }, - "flaggedIPType": { - "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", - "enum": [ - "SUSPICIOUS", - "FLAGGED" - ], - "example": "FLAGGED", - "type": "string", - "x-enum-varnames": [ - "SUSPICIOUS", - "FLAGGED" - ] - }, - "userBehaviorName": { - "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "description": "The action type.", - "enum": [ - "block_ip", - "block_user", - "user_behavior", - "flag_ip" - ], - "type": "string", - "x-enum-varnames": [ - "BLOCK_IP", - "BLOCK_USER", - "USER_BEHAVIOR", - "FLAG_IP" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "condition": { - "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", - "type": "string" - }, - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "from": { - "description": "Starting time of data analyzed by the job.", - "example": 1729843470000, - "format": "int64", - "type": "integer" - }, - "groupSignalsBy": { - "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", - "example": [ - "service" - ], - "items": { - "description": "Field to group by.", - "type": "string" - }, - "type": "array" - }, - "index": { - "description": "Index used to load the data.", - "example": "cloud_siem", - "type": "string" - }, - "message": { - "description": "Message for generated results.", - "example": "A large number of failed login attempts.", - "type": "string" - }, - "name": { - "description": "Job name.", - "example": "Excessive number of failed attempts.", - "type": "string" - }, - "options": { - "description": "Job options.", - "properties": { - "detectionMethod": { - "description": "The detection method.", - "enum": [ - "threshold", - "new_value", - "anomaly_detection", - "impossible_travel", - "hardcoded", - "third_party", - "anomaly_threshold", - "sequence_detection" - ], - "type": "string", - "x-enum-varnames": [ - "THRESHOLD", - "NEW_VALUE", - "ANOMALY_DETECTION", - "IMPOSSIBLE_TRAVEL", - "HARDCODED", - "THIRD_PARTY", - "ANOMALY_THRESHOLD", - "SEQUENCE_DETECTION" - ] - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "impossibleTravelOptions": { - "description": "Options on impossible travel detection method.", - "properties": { - "baselineUserLocations": { - "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", - "example": true, - "type": "boolean" - } - }, - "type": "object" - }, - "keepAlive": { - "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "maxSignalDuration": { - "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "newValueOptions": { - "description": "Options on new value detection method.", - "properties": { - "forgetAfter": { - "description": "The duration in days after which a learned value is forgotten.", - "enum": [ - 1, - 2, - 7, - 14, - 21, - 28 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ONE_DAY", - "TWO_DAYS", - "ONE_WEEK", - "TWO_WEEKS", - "THREE_WEEKS", - "FOUR_WEEKS" - ] - }, - "learningDuration": { - "default": 0, - "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", - "enum": [ - 0, - 1, - 7 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_DAYS", - "ONE_DAY", - "SEVEN_DAYS" - ] - }, - "learningMethod": { - "default": "duration", - "description": "The learning method used to determine when signals should be generated for values that weren't learned.", - "enum": [ - "duration", - "threshold" - ], - "type": "string", - "x-enum-varnames": [ - "DURATION", - "THRESHOLD" - ] - }, - "learningThreshold": { - "default": 0, - "description": "A number of occurrences after which signals will be generated for values that weren't learned.", - "enum": [ - 0, - 1 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_OCCURRENCES", - "ONE_OCCURRENCE" - ] - } - }, - "type": "object" - }, - "sequenceDetectionOptions": { - "description": "Options on sequence detection method.", - "properties": { - "stepTransitions": { - "description": "Transitions defining the allowed order of steps and their evaluation windows.", - "items": { - "description": "Transition from a parent step to a child step within a sequence detection rule.", - "properties": { - "child": { - "description": "Name of the child step.", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "parent": { - "description": "Name of the parent step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "steps": { - "description": "Steps that define the conditions to be matched in sequence.", - "items": { - "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", - "properties": { - "condition": { - "description": "Condition referencing rule queries (e.g., `a > 0`).", - "type": "string" - }, - "evaluationWindow": { - "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", - "enum": [ - 0, - 60, - 300, - 600, - 900, - 1800, - 3600, - 7200, - 10800, - 21600, - 43200, - 86400 - ], - "format": "int32", - "type": "integer", - "x-enum-varnames": [ - "ZERO_MINUTES", - "ONE_MINUTE", - "FIVE_MINUTES", - "TEN_MINUTES", - "FIFTEEN_MINUTES", - "THIRTY_MINUTES", - "ONE_HOUR", - "TWO_HOURS", - "THREE_HOURS", - "SIX_HOURS", - "TWELVE_HOURS", - "ONE_DAY" - ] - }, - "name": { - "description": "Unique name identifying the step.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "thirdPartyRuleOptions": { - "description": "Options on third party detection method.", - "properties": { - "defaultNotifications": { - "description": "Notification targets for the logs that do not correspond to any of the cases.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "defaultStatus": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - }, - "rootQueries": { - "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", - "items": { - "description": "A query to be combined with the third party case query.", - "properties": { - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "Query to run on logs.", - "example": "source:cloudtrail", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "signalTitleTemplate": { - "description": "A template for the signal title; if omitted, the title is generated based on the case name.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "queries": { - "description": "Queries for selecting logs analyzed by the job.", - "items": { - "description": "Query for selecting logs analyzed by the historical job.", - "properties": { - "aggregation": { - "description": "The aggregation type.", - "enum": [ - "count", - "cardinality", - "sum", - "max", - "new_value", - "geo_data", - "event_count", - "none" - ], - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "SUM", - "MAX", - "NEW_VALUE", - "GEO_DATA", - "EVENT_COUNT", - "NONE" - ] - }, - "dataSource": { - "default": "logs", - "description": "Source of events, either logs, audit trail, or Datadog events.", - "enum": [ - "logs", - "audit", - "app_sec_spans", - "spans", - "security_runtime", - "network", - "events" - ], - "example": "logs", - "type": "string", - "x-enum-varnames": [ - "LOGS", - "AUDIT", - "APP_SEC_SPANS", - "SPANS", - "SECURITY_RUNTIME", - "NETWORK", - "EVENTS" - ] - }, - "distinctFields": { - "description": "Field for which the cardinality is measured. Sent as an array.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "groupByFields": { - "description": "Fields to group by.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "hasOptionalGroupByFields": { - "default": false, - "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", - "example": false, - "type": "boolean" - }, - "metrics": { - "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", - "items": { - "description": "Field.", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Name of the query.", - "type": "string" - }, - "query": { - "description": "Query to run on logs.", - "example": "a > 3", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "referenceTables": { - "description": "Reference tables used in the queries.", - "items": { - "description": "Reference tables used in the queries.", - "properties": { - "checkPresence": { - "description": "Whether to include or exclude the matched values.", - "type": "boolean" - }, - "columnName": { - "description": "The name of the column in the reference table.", - "type": "string" - }, - "logFieldPath": { - "description": "The field in the log to match against the reference table.", - "type": "string" - }, - "ruleQueryName": { - "description": "The name of the query to apply the reference table to.", - "type": "string" - }, - "tableName": { - "description": "The name of the reference table.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tags": { - "description": "Tags for generated signals.", - "items": { - "type": "string" - }, - "type": "array" - }, - "thirdPartyCases": { - "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", - "example": [], - "items": { - "description": "Case when a signal is generated by a third party rule.", - "properties": { - "name": { - "description": "Name of the case.", - "type": "string" - }, - "notifications": { - "description": "Notification targets for each case.", - "items": { - "description": "Notification.", - "type": "string" - }, - "type": "array" - }, - "query": { - "description": "A query to map a third party event to this case.", - "type": "string" - }, - "status": { - "description": "Severity of the Security Signal.", - "enum": [ - "info", - "low", - "medium", - "high", - "critical" - ], - "example": "critical", - "type": "string", - "x-enum-varnames": [ - "INFO", - "LOW", - "MEDIUM", - "HIGH", - "CRITICAL" - ] - } - }, - "required": [ - "status" - ], - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Ending time of data analyzed by the job.", - "example": 1729847070000, - "format": "int64", - "type": "integer" - }, - "type": { - "description": "Job type.", - "type": "string" - } - }, - "required": [ - "from", - "to", - "index", - "name", - "cases", - "queries", - "message" - ], - "type": "object" - }, - "jobName": { - "description": "Job name.", - "type": "string" - }, - "jobStatus": { - "description": "Job status.", - "type": "string" - }, - "modifiedAt": { - "description": "Last modification time of the job.", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the job.", - "type": "string" - }, - "type": { - "description": "Type of payload.", - "enum": [ - "historicalDetectionsJob" - ], - "type": "string", - "x-enum-varnames": [ - "HISTORICALDETECTIONSJOB" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "meta": { - "description": "Metadata about the list of jobs.", - "properties": { - "totalCount": { - "description": "Number of jobs in the list.", - "format": "int32", - "maximum": 2147483647, - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, "ListKindCatalogResponse": { "description": "List kind response.", "properties": { @@ -201096,6 +197391,829 @@ "_USER_COUNT" ] }, + "ListThreatHuntingJobsResponse": { + "description": "List of threat hunting jobs.", + "properties": { + "data": { + "description": "Array containing the list of threat hunting jobs.", + "items": { + "description": "Threat hunting job response data.", + "properties": { + "attributes": { + "description": "Threat hunting job attributes.", + "properties": { + "createdAt": { + "description": "Time when the job was created.", + "type": "string" + }, + "createdByHandle": { + "description": "The handle of the user who created the job.", + "type": "string" + }, + "createdByName": { + "description": "The name of the user who created the job.", + "type": "string" + }, + "createdFromRuleId": { + "description": "ID of the rule used to create the job (if it is created from a rule).", + "type": "string" + }, + "jobDefinition": { + "description": "Definition of a threat hunting job.", + "properties": { + "calculatedFields": { + "description": "Calculated fields.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string" + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string" + } + }, + "required": [ + "name", + "expression" + ], + "type": "object" + }, + "type": "array" + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration of the action in seconds. 0 indicates no expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "flaggedIPType": { + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED" + ] + }, + "userBehaviorName": { + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "condition": { + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", + "type": "string" + }, + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "type": "array" + }, + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer" + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", + "example": [ + "service" + ], + "items": { + "description": "Field to group by.", + "type": "string" + }, + "type": "array" + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string" + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string" + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string" + }, + "options": { + "description": "Job options.", + "properties": { + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", + "enum": [ + 1, + 2, + 7, + 14, + 21, + 28 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" + ] + }, + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", + "enum": [ + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" + ], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" + ] + } + }, + "type": "object" + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", + "items": { + "description": "Transition from a parent step to a child step within a sequence detection rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "queries": { + "description": "Queries for selecting logs analyzed by the job.", + "items": { + "description": "Query for selecting logs analyzed by the threat hunting job.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] + }, + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" + ] + }, + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" + }, + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the query.", + "type": "string" + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean" + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string" + }, + "logFieldPath": { + "description": "The field in the log to match against the reference table.", + "type": "string" + }, + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", + "type": "string" + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tags": { + "description": "Tags for generated signals.", + "items": { + "type": "string" + }, + "type": "array" + }, + "thirdPartyCases": { + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets for each case.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Job type.", + "type": "string" + } + }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message" + ], + "type": "object" + }, + "jobName": { + "description": "Job name.", + "type": "string" + }, + "jobStatus": { + "description": "Job status.", + "type": "string" + }, + "modifiedAt": { + "description": "Last modification time of the job.", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the job.", + "type": "string" + }, + "type": { + "description": "Type of payload.", + "enum": [ + "historicalDetectionsJob" + ], + "type": "string", + "x-enum-varnames": [ + "HISTORICALDETECTIONSJOB" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Metadata about the list of jobs.", + "properties": { + "totalCount": { + "description": "Number of jobs in the list.", + "format": "int32", + "maximum": 2147483647, + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, "ListVulnerabilitiesResponse": { "description": "The expected response schema when listing vulnerabilities.", "properties": { @@ -295607,17 +292725,22 @@ }, "type": "object" }, - "RunHistoricalJobRequest": { - "description": "Run a historical job request.", + "RunRetentionFilterName": { + "description": "The name of a RUM retention filter.", + "example": "Retention filter for session", + "type": "string" + }, + "RunThreatHuntingJobRequest": { + "description": "Run a threat hunting job request.", "properties": { "data": { - "description": "Data for running a historical job request.", + "description": "Data for running a threat hunting job request.", "properties": { "attributes": { - "description": "Run a historical job request.", + "description": "Run a threat hunting job request.", "properties": { "fromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -295665,7 +292788,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -296209,7 +293332,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -296430,11 +293553,11 @@ }, "type": "object" }, - "RunHistoricalJobRequestAttributes": { - "description": "Run a historical job request.", + "RunThreatHuntingJobRequestAttributes": { + "description": "Run a threat hunting job request.", "properties": { "fromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -296482,7 +293605,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -297026,7 +294149,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -297231,14 +294354,14 @@ }, "type": "object" }, - "RunHistoricalJobRequestData": { - "description": "Data for running a historical job request.", + "RunThreatHuntingJobRequestData": { + "description": "Data for running a threat hunting job request.", "properties": { "attributes": { - "description": "Run a historical job request.", + "description": "Run a threat hunting job request.", "properties": { "fromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -297286,7 +294409,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -297830,7 +294953,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -298048,7 +295171,7 @@ }, "type": "object" }, - "RunHistoricalJobRequestDataType": { + "RunThreatHuntingJobRequestDataType": { "description": "Type of data.", "enum": [ "historicalDetectionsJobCreate" @@ -298058,11 +295181,6 @@ "HISTORICALDETECTIONSJOBCREATE" ] }, - "RunRetentionFilterName": { - "description": "The name of a RUM retention filter.", - "example": "Retention filter for session", - "type": "string" - }, "SAMLAssertionAttribute": { "description": "SAML assertion attribute.", "properties": { @@ -360124,48 +357242,1369 @@ } }, "required": [ - "type", - "channel", - "workspace" + "type", + "channel", + "workspace" + ], + "type": "object" + }, + { + "description": "Sends a message to a Microsoft Teams channel.", + "properties": { + "channel": { + "description": "The channel ID.", + "example": "CHANNEL", + "type": "string" + }, + "team": { + "description": "The team ID.", + "example": "TEAM", + "type": "string" + }, + "tenant": { + "description": "The tenant ID.", + "example": "TENANT", + "type": "string" + }, + "type": { + "default": "send_teams_message", + "description": "Indicates that the action is a send Microsoft Teams message action.", + "enum": [ + "send_teams_message" + ], + "example": "send_teams_message", + "type": "string", + "x-enum-varnames": [ + "SEND_TEAMS_MESSAGE" + ] + } + }, + "required": [ + "type", + "channel", + "tenant", + "team" + ], + "type": "object" + } + ] + }, + "type": "array" + }, + "policy_id": { + "description": "Identifies the policy to be applied when this routing rule matches.", + "type": "string" + }, + "query": { + "description": "Defines the query or condition that triggers this routing rule.", + "type": "string" + }, + "time_restriction": { + "description": "Holds time zone information and a list of time restrictions for a routing rule.", + "properties": { + "restrictions": { + "description": "Defines the list of time-based restrictions.", + "items": { + "description": "Defines a single time restriction rule with start and end times and the applicable weekdays.", + "properties": { + "end_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ] + }, + "end_time": { + "description": "Specifies the ending time for this restriction.", + "type": "string" + }, + "start_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ] + }, + "start_time": { + "description": "Specifies the starting time for this restriction.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "time_zone": { + "description": "Specifies the time zone applicable to the restrictions.", + "example": "", + "type": "string" + } + }, + "required": [ + "time_zone", + "restrictions" + ], + "type": "object" + }, + "urgency": { + "description": "Specifies the level of urgency for a routing rule (low, high, or dynamic).", + "enum": [ + "low", + "high", + "dynamic" + ], + "example": "low", + "type": "string", + "x-enum-varnames": [ + "LOW", + "HIGH", + "DYNAMIC" + ] + } + }, + "type": "object" + }, + "TeamSyncAttributes": { + "description": "Team sync attributes.", + "properties": { + "source": { + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "enum": [ + "github" + ], + "example": "github", + "type": "string", + "x-enum-varnames": [ + "GITHUB" + ] + }, + "type": { + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "enum": [ + "link" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK" + ] + } + }, + "required": [ + "source", + "type" + ], + "type": "object" + }, + "TeamSyncAttributesSource": { + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "enum": [ + "github" + ], + "example": "github", + "type": "string", + "x-enum-varnames": [ + "GITHUB" + ] + }, + "TeamSyncAttributesType": { + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "enum": [ + "link" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK" + ] + }, + "TeamSyncBulkType": { + "description": "Team sync bulk type.", + "enum": [ + "team_sync_bulk" + ], + "example": "team_sync_bulk", + "type": "string", + "x-enum-varnames": [ + "TEAM_SYNC_BULK" + ] + }, + "TeamSyncData": { + "description": "Team sync data.", + "properties": { + "attributes": { + "description": "Team sync attributes.", + "properties": { + "source": { + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "enum": [ + "github" + ], + "example": "github", + "type": "string", + "x-enum-varnames": [ + "GITHUB" + ] + }, + "type": { + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "enum": [ + "link" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK" + ] + } + }, + "required": [ + "source", + "type" + ], + "type": "object" + }, + "type": { + "description": "Team sync bulk type.", + "enum": [ + "team_sync_bulk" + ], + "example": "team_sync_bulk", + "type": "string", + "x-enum-varnames": [ + "TEAM_SYNC_BULK" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + }, + "TeamSyncRequest": { + "description": "Team sync request.", + "example": { + "data": { + "attributes": { + "source": "github", + "type": "link" + }, + "type": "team_sync_bulk" + } + }, + "properties": { + "data": { + "description": "Team sync data.", + "properties": { + "attributes": { + "description": "Team sync attributes.", + "properties": { + "source": { + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "enum": [ + "github" + ], + "example": "github", + "type": "string", + "x-enum-varnames": [ + "GITHUB" + ] + }, + "type": { + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "enum": [ + "link" + ], + "example": "link", + "type": "string", + "x-enum-varnames": [ + "LINK" + ] + } + }, + "required": [ + "source", + "type" + ], + "type": "object" + }, + "type": { + "description": "Team sync bulk type.", + "enum": [ + "team_sync_bulk" + ], + "example": "team_sync_bulk", + "type": "string", + "x-enum-varnames": [ + "TEAM_SYNC_BULK" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "TeamTarget": { + "description": "Represents a team target for an escalation policy step, including the team's ID and resource type.", + "properties": { + "id": { + "description": "Specifies the unique identifier of the team resource.", + "example": "00000000-aba1-0000-0000-000000000000", + "type": "string" + }, + "type": { + "default": "teams", + "description": "Indicates that the resource is of type `teams`.", + "enum": [ + "teams" + ], + "example": "teams", + "type": "string", + "x-enum-varnames": [ + "TEAMS" + ] + } + }, + "required": [ + "type", + "id" + ], + "type": "object" + }, + "TeamTargetType": { + "default": "teams", + "description": "Indicates that the resource is of type `teams`.", + "enum": [ + "teams" + ], + "example": "teams", + "type": "string", + "x-enum-varnames": [ + "TEAMS" + ] + }, + "TeamType": { + "default": "team", + "description": "Team type", + "enum": [ + "team" + ], + "example": "team", + "type": "string", + "x-enum-varnames": [ + "TEAM" + ] + }, + "TeamUpdate": { + "description": "Team update request", + "properties": { + "attributes": { + "description": "Team update attributes", + "properties": { + "avatar": { + "description": "Unicode representation of the avatar for the team, limited to a single grapheme", + "example": "🥑", + "nullable": true, + "type": "string" + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": true, + "type": "integer" + }, + "description": { + "description": "Free-form markdown description/content for the team's homepage", + "type": "string" + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string" + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string" + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "relationships": { + "description": "Team update relationships", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "team", + "description": "Team type", + "enum": [ + "team" + ], + "example": "team", + "type": "string", + "x-enum-varnames": [ + "TEAM" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + }, + "TeamUpdateAttributes": { + "description": "Team update attributes", + "properties": { + "avatar": { + "description": "Unicode representation of the avatar for the team, limited to a single grapheme", + "example": "🥑", + "nullable": true, + "type": "string" + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": true, + "type": "integer" + }, + "description": { + "description": "Free-form markdown description/content for the team's homepage", + "type": "string" + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string" + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string" + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "TeamUpdateRelationships": { + "description": "Team update relationships", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "TeamUpdateRequest": { + "description": "Team update request", + "properties": { + "data": { + "description": "Team update request", + "properties": { + "attributes": { + "description": "Team update attributes", + "properties": { + "avatar": { + "description": "Unicode representation of the avatar for the team, limited to a single grapheme", + "example": "🥑", + "nullable": true, + "type": "string" + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": true, + "type": "integer" + }, + "description": { + "description": "Free-form markdown description/content for the team's homepage", + "type": "string" + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string" + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string" + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "relationships": { + "description": "Team update relationships", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "team", + "description": "Team type", + "enum": [ + "team" + ], + "example": "team", + "type": "string", + "x-enum-varnames": [ + "TEAM" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "TeamsField": { + "description": "Supported teams field.", + "enum": [ + "id", + "name", + "handle", + "summary", + "description", + "avatar", + "banner", + "visible_modules", + "hidden_modules", + "created_at", + "modified_at", + "user_count", + "link_count", + "team_links", + "user_team_permissions" + ], + "type": "string", + "x-enum-varnames": [ + "ID", + "NAME", + "HANDLE", + "SUMMARY", + "DESCRIPTION", + "AVATAR", + "BANNER", + "VISIBLE_MODULES", + "HIDDEN_MODULES", + "CREATED_AT", + "MODIFIED_AT", + "USER_COUNT", + "LINK_COUNT", + "TEAM_LINKS", + "USER_TEAM_PERMISSIONS" + ] + }, + "TeamsResponse": { + "description": "Response with multiple teams", + "properties": { + "data": { + "description": "Teams response data", + "items": { + "description": "A team", + "properties": { + "attributes": { + "description": "Team attributes", + "properties": { + "avatar": { + "description": "Unicode representation of the avatar for the team, limited to a single grapheme", + "example": "🥑", + "nullable": true, + "type": "string" + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": true, + "type": "integer" + }, + "created_at": { + "description": "Creation date of the team", + "format": "date-time", + "type": "string" + }, + "description": { + "description": "Free-form markdown description/content for the team's homepage", + "nullable": true, + "type": "string" + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string" + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + }, + "link_count": { + "description": "The number of links belonging to the team", + "format": "int32", + "maximum": 2147483647, + "readOnly": true, + "type": "integer" + }, + "modified_at": { + "description": "Modification date of the team", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string" + }, + "summary": { + "description": "A brief summary of the team, derived from the `description`", + "maxLength": 120, + "nullable": true, + "type": "string" + }, + "user_count": { + "description": "The number of users belonging to the team", + "format": "int32", + "maximum": 2147483647, + "readOnly": true, + "type": "integer" + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "id": { + "description": "The team's identifier", + "example": "aeadc05e-98a8-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "relationships": { + "description": "Resources related to a team", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "user_team_permissions": { + "description": "Relationship between a user team permission and a team", + "properties": { + "data": { + "description": "Related user team permission data", + "properties": { + "id": { + "description": "The ID of the user team permission", + "example": "UserTeamPermissions-aeadc05e-98a8-11ec-ac2c-da7ad0900001-416595", + "type": "string" + }, + "type": { + "default": "user_team_permissions", + "description": "User team permission type", + "enum": [ + "user_team_permissions" + ], + "example": "user_team_permissions", + "type": "string", + "x-enum-varnames": [ + "USER_TEAM_PERMISSIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "team", + "description": "Team type", + "enum": [ + "team" + ], + "example": "team", + "type": "string", + "x-enum-varnames": [ + "TEAM" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "included": { + "description": "Resources related to the team", + "items": { + "description": "Included resources related to the team", + "oneOf": [ + { + "description": "User object returned by the API.", + "properties": { + "attributes": { + "description": "Attributes of user object returned by the API.", + "properties": { + "created_at": { + "description": "Creation time of the user.", + "format": "date-time", + "type": "string" + }, + "disabled": { + "description": "Whether the user is disabled.", + "type": "boolean" + }, + "email": { + "description": "Email of the user.", + "type": "string" + }, + "handle": { + "description": "Handle of the user.", + "type": "string" + }, + "icon": { + "description": "URL of the user's icon.", + "type": "string" + }, + "mfa_enabled": { + "description": "If user has MFA enabled.", + "readOnly": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time that the user was last modified.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the user.", + "nullable": true, + "type": "string" + }, + "service_account": { + "description": "Whether the user is a service account.", + "type": "boolean" + }, + "status": { + "description": "Status of the user.", + "type": "string" + }, + "title": { + "description": "Title of the user.", + "nullable": true, + "type": "string" + }, + "verified": { + "description": "Whether the user is verified.", + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the user.", + "type": "string" + }, + "relationships": { + "description": "Relationships of the user object returned by the API.", + "properties": { + "org": { + "description": "Relationship to an organization.", + "properties": { + "data": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "other_orgs": { + "description": "Relationship to organizations.", + "properties": { + "data": { + "description": "Relationships to organization objects.", + "example": [], + "items": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "other_users": { + "description": "Relationship to users.", + "properties": { + "data": { + "description": "Relationships to user objects.", + "example": [], + "items": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An array containing type and the unique identifier of a role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The unique identifier of the role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string" + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": [ + "roles" + ], + "example": "roles", + "type": "string", + "x-enum-varnames": [ + "ROLES" + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "type": "object" + }, + { + "description": "Team link", + "properties": { + "attributes": { + "description": "Team link attributes", + "properties": { + "label": { + "description": "The link's label", + "example": "Link label", + "maxLength": 256, + "type": "string" + }, + "position": { + "description": "The link's position, used to sort links for the team", + "format": "int32", + "maximum": 2147483647, + "type": "integer" + }, + "team_id": { + "description": "ID of the team the link is associated with", + "readOnly": true, + "type": "string" + }, + "url": { + "description": "The URL for the link", + "example": "https://example.com", + "type": "string" + } + }, + "required": [ + "label", + "url" + ], + "type": "object" + }, + "id": { + "description": "The team link's identifier", + "example": "b8626d7e-cedd-11eb-abf5-da7ad0900001", + "type": "string" + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": [ + "team_links" + ], + "example": "team_links", + "type": "string", + "x-enum-varnames": [ + "TEAM_LINKS" + ] + } + }, + "required": [ + "attributes", + "id", + "type" ], "type": "object" }, { - "description": "Sends a message to a Microsoft Teams channel.", + "description": "A user's permissions for a given team", "properties": { - "channel": { - "description": "The channel ID.", - "example": "CHANNEL", - "type": "string" - }, - "team": { - "description": "The team ID.", - "example": "TEAM", - "type": "string" + "attributes": { + "description": "User team permission attributes", + "properties": { + "permissions": { + "description": "Object of team permission actions and boolean values that a logged in user can perform on this team.", + "readOnly": true, + "type": "object" + } + }, + "type": "object" }, - "tenant": { - "description": "The tenant ID.", - "example": "TENANT", + "id": { + "description": "The user team permission's identifier", + "example": "UserTeamPermissions-aeadc05e-98a8-11ec-ac2c-da7ad0900001-416595", "type": "string" }, "type": { - "default": "send_teams_message", - "description": "Indicates that the action is a send Microsoft Teams message action.", + "default": "user_team_permissions", + "description": "User team permission type", "enum": [ - "send_teams_message" + "user_team_permissions" ], - "example": "send_teams_message", + "example": "user_team_permissions", "type": "string", "x-enum-varnames": [ - "SEND_TEAMS_MESSAGE" + "USER_TEAM_PERMISSIONS" ] } }, "required": [ - "type", - "channel", - "tenant", - "team" + "id", + "type" ], "type": "object" } @@ -360173,694 +358612,2066 @@ }, "type": "array" }, - "policy_id": { - "description": "Identifies the policy to be applied when this routing rule matches.", + "links": { + "description": "Teams response links.", + "properties": { + "first": { + "description": "First link.", + "type": "string" + }, + "last": { + "description": "Last link.", + "nullable": true, + "type": "string" + }, + "next": { + "description": "Next link.", + "type": "string" + }, + "prev": { + "description": "Previous link.", + "nullable": true, + "type": "string" + }, + "self": { + "description": "Current link.", + "type": "string" + } + }, + "type": "object" + }, + "meta": { + "description": "Teams response metadata.", + "properties": { + "pagination": { + "description": "Teams response metadata.", + "properties": { + "first_offset": { + "description": "The first offset.", + "format": "int64", + "type": "integer" + }, + "last_offset": { + "description": "The last offset.", + "format": "int64", + "type": "integer" + }, + "limit": { + "description": "Pagination limit.", + "format": "int64", + "type": "integer" + }, + "next_offset": { + "description": "The next offset.", + "format": "int64", + "type": "integer" + }, + "offset": { + "description": "The offset.", + "format": "int64", + "type": "integer" + }, + "prev_offset": { + "description": "The previous offset.", + "format": "int64", + "type": "integer" + }, + "total": { + "description": "Total results.", + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Offset type.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "TeamsResponseLinks": { + "description": "Teams response links.", + "properties": { + "first": { + "description": "First link.", "type": "string" }, - "query": { - "description": "Defines the query or condition that triggers this routing rule.", + "last": { + "description": "Last link.", + "nullable": true, "type": "string" }, - "time_restriction": { - "description": "Holds time zone information and a list of time restrictions for a routing rule.", + "next": { + "description": "Next link.", + "type": "string" + }, + "prev": { + "description": "Previous link.", + "nullable": true, + "type": "string" + }, + "self": { + "description": "Current link.", + "type": "string" + } + }, + "type": "object" + }, + "TeamsResponseMeta": { + "description": "Teams response metadata.", + "properties": { + "pagination": { + "description": "Teams response metadata.", "properties": { - "restrictions": { - "description": "Defines the list of time-based restrictions.", - "items": { - "description": "Defines a single time restriction rule with start and end times and the applicable weekdays.", - "properties": { - "end_day": { - "description": "A day of the week.", - "enum": [ - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - "sunday" - ], - "type": "string", - "x-enum-varnames": [ - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY", - "SUNDAY" - ] - }, - "end_time": { - "description": "Specifies the ending time for this restriction.", - "type": "string" - }, - "start_day": { - "description": "A day of the week.", - "enum": [ - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - "sunday" - ], - "type": "string", - "x-enum-varnames": [ - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY", - "SUNDAY" - ] - }, - "start_time": { - "description": "Specifies the starting time for this restriction.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" + "first_offset": { + "description": "The first offset.", + "format": "int64", + "type": "integer" }, - "time_zone": { - "description": "Specifies the time zone applicable to the restrictions.", - "example": "", + "last_offset": { + "description": "The last offset.", + "format": "int64", + "type": "integer" + }, + "limit": { + "description": "Pagination limit.", + "format": "int64", + "type": "integer" + }, + "next_offset": { + "description": "The next offset.", + "format": "int64", + "type": "integer" + }, + "offset": { + "description": "The offset.", + "format": "int64", + "type": "integer" + }, + "prev_offset": { + "description": "The previous offset.", + "format": "int64", + "type": "integer" + }, + "total": { + "description": "Total results.", + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Offset type.", "type": "string" } }, - "required": [ - "time_zone", - "restrictions" - ], "type": "object" - }, - "urgency": { - "description": "Specifies the level of urgency for a routing rule (low, high, or dynamic).", - "enum": [ - "low", - "high", - "dynamic" - ], - "example": "low", - "type": "string", - "x-enum-varnames": [ - "LOW", - "HIGH", - "DYNAMIC" - ] } }, "type": "object" }, - "TeamSyncAttributes": { - "description": "Team sync attributes.", + "TeamsResponseMetaPagination": { + "description": "Teams response metadata.", "properties": { - "source": { - "description": "The external source platform for team synchronization. Only \"github\" is supported.", - "enum": [ - "github" - ], - "example": "github", - "type": "string", - "x-enum-varnames": [ - "GITHUB" - ] + "first_offset": { + "description": "The first offset.", + "format": "int64", + "type": "integer" + }, + "last_offset": { + "description": "The last offset.", + "format": "int64", + "type": "integer" + }, + "limit": { + "description": "Pagination limit.", + "format": "int64", + "type": "integer" + }, + "next_offset": { + "description": "The next offset.", + "format": "int64", + "type": "integer" + }, + "offset": { + "description": "The offset.", + "format": "int64", + "type": "integer" + }, + "prev_offset": { + "description": "The previous offset.", + "format": "int64", + "type": "integer" + }, + "total": { + "description": "Total results.", + "format": "int64", + "type": "integer" }, "type": { - "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", - "enum": [ - "link" - ], - "example": "link", - "type": "string", - "x-enum-varnames": [ - "LINK" - ] + "description": "Offset type.", + "type": "string" } }, - "required": [ - "source", - "type" - ], "type": "object" }, - "TeamSyncAttributesSource": { - "description": "The external source platform for team synchronization. Only \"github\" is supported.", - "enum": [ - "github" - ], - "example": "github", - "type": "string", - "x-enum-varnames": [ - "GITHUB" - ] - }, - "TeamSyncAttributesType": { - "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "ThreatHuntingJobDataType": { + "description": "Type of payload.", "enum": [ - "link" + "historicalDetectionsJob" ], - "example": "link", "type": "string", "x-enum-varnames": [ - "LINK" + "HISTORICALDETECTIONSJOB" ] }, - "TeamSyncBulkType": { - "description": "Team sync bulk type.", - "enum": [ - "team_sync_bulk" - ], - "example": "team_sync_bulk", - "type": "string", - "x-enum-varnames": [ - "TEAM_SYNC_BULK" - ] + "ThreatHuntingJobListMeta": { + "description": "Metadata about the list of jobs.", + "properties": { + "totalCount": { + "description": "Number of jobs in the list.", + "format": "int32", + "maximum": 2147483647, + "type": "integer" + } + }, + "type": "object" }, - "TeamSyncData": { - "description": "Team sync data.", + "ThreatHuntingJobOptions": { + "description": "Job options.", "properties": { - "attributes": { - "description": "Team sync attributes.", + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", "properties": { - "source": { - "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", "enum": [ - "github" + 1, + 2, + 7, + 14, + 21, + 28 ], - "example": "github", - "type": "string", + "format": "int32", + "type": "integer", "x-enum-varnames": [ - "GITHUB" + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" ] }, - "type": { - "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", "enum": [ - "link" + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" ], - "example": "link", "type": "string", "x-enum-varnames": [ - "LINK" + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" ] } }, - "required": [ - "source", - "type" - ], "type": "object" }, - "type": { - "description": "Team sync bulk type.", - "enum": [ - "team_sync_bulk" - ], - "example": "team_sync_bulk", - "type": "string", - "x-enum-varnames": [ - "TEAM_SYNC_BULK" - ] - } - }, - "required": [ - "attributes", - "type" - ], - "type": "object" - }, - "TeamSyncRequest": { - "description": "Team sync request.", - "example": { - "data": { - "attributes": { - "source": "github", - "type": "link" - }, - "type": "team_sync_bulk" - } - }, - "properties": { - "data": { - "description": "Team sync data.", + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", "properties": { - "attributes": { - "description": "Team sync attributes.", - "properties": { - "source": { - "description": "The external source platform for team synchronization. Only \"github\" is supported.", - "enum": [ - "github" - ], - "example": "github", - "type": "string", - "x-enum-varnames": [ - "GITHUB" - ] + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", + "items": { + "description": "Transition from a parent step to a child step within a sequence detection rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" + } }, - "type": { - "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", - "enum": [ - "link" - ], - "example": "link", - "type": "string", - "x-enum-varnames": [ - "LINK" - ] - } + "type": "object" }, - "required": [ - "source", - "type" - ], - "type": "object" + "type": "array" }, - "type": { - "description": "Team sync bulk type.", + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", "enum": [ - "team_sync_bulk" + "info", + "low", + "medium", + "high", + "critical" ], - "example": "team_sync_bulk", + "example": "critical", "type": "string", "x-enum-varnames": [ - "TEAM_SYNC_BULK" + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" } }, - "required": [ - "attributes", - "type" - ], "type": "object" } }, - "required": [ - "data" - ], "type": "object" }, - "TeamTarget": { - "description": "Represents a team target for an escalation policy step, including the team's ID and resource type.", + "ThreatHuntingJobQuery": { + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { - "id": { - "description": "Specifies the unique identifier of the team resource.", - "example": "00000000-aba1-0000-0000-000000000000", - "type": "string" + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] }, - "type": { - "default": "teams", - "description": "Indicates that the resource is of type `teams`.", + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", "enum": [ - "teams" + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" ], - "example": "teams", + "example": "logs", "type": "string", "x-enum-varnames": [ - "TEAMS" + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" ] + }, + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" + }, + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the query.", + "type": "string" + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string" } }, - "required": [ - "type", - "id" - ], "type": "object" }, - "TeamTargetType": { - "default": "teams", - "description": "Indicates that the resource is of type `teams`.", - "enum": [ - "teams" - ], - "example": "teams", - "type": "string", - "x-enum-varnames": [ - "TEAMS" - ] - }, - "TeamType": { - "default": "team", - "description": "Team type", - "enum": [ - "team" - ], - "example": "team", - "type": "string", - "x-enum-varnames": [ - "TEAM" - ] - }, - "TeamUpdate": { - "description": "Team update request", + "ThreatHuntingJobResponse": { + "description": "Threat hunting job response.", "properties": { - "attributes": { - "description": "Team update attributes", - "properties": { - "avatar": { - "description": "Unicode representation of the avatar for the team, limited to a single grapheme", - "example": "🥑", - "nullable": true, - "type": "string" - }, - "banner": { - "description": "Banner selection for the team", - "format": "int64", - "nullable": true, - "type": "integer" - }, - "description": { - "description": "Free-form markdown description/content for the team's homepage", - "type": "string" - }, - "handle": { - "description": "The team's identifier", - "example": "example-team", - "maxLength": 195, - "type": "string" - }, - "hidden_modules": { - "description": "Collection of hidden modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "The name of the team", - "example": "Example Team", - "maxLength": 200, - "type": "string" - }, - "visible_modules": { - "description": "Collection of visible modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "handle", - "name" - ], - "type": "object" - }, - "relationships": { - "description": "Team update relationships", + "data": { + "description": "Threat hunting job response data.", "properties": { - "team_links": { - "description": "Relationship between a team and a team link", + "attributes": { + "description": "Threat hunting job attributes.", "properties": { - "data": { - "description": "Related team links", - "items": { - "description": "Relationship between a link and a team", - "properties": { - "id": { - "description": "The team link's identifier", - "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "createdAt": { + "description": "Time when the job was created.", + "type": "string" + }, + "createdByHandle": { + "description": "The handle of the user who created the job.", + "type": "string" + }, + "createdByName": { + "description": "The name of the user who created the job.", + "type": "string" + }, + "createdFromRuleId": { + "description": "ID of the rule used to create the job (if it is created from a rule).", + "type": "string" + }, + "jobDefinition": { + "description": "Definition of a threat hunting job.", + "properties": { + "calculatedFields": { + "description": "Calculated fields.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string" + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string" + } + }, + "required": [ + "name", + "expression" + ], + "type": "object" + }, + "type": "array" + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration of the action in seconds. 0 indicates no expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "flaggedIPType": { + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED" + ] + }, + "userBehaviorName": { + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "condition": { + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", + "type": "string" + }, + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "type": "array" + }, + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer" + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", + "example": [ + "service" + ], + "items": { + "description": "Field to group by.", "type": "string" }, - "type": { - "default": "team_links", - "description": "Team link type", - "enum": [ - "team_links" + "type": "array" + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string" + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string" + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string" + }, + "options": { + "description": "Job options.", + "properties": { + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", + "enum": [ + 1, + 2, + 7, + 14, + 21, + 28 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" + ] + }, + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", + "enum": [ + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" + ], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" + ] + } + }, + "type": "object" + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", + "items": { + "description": "Transition from a parent step to a child step within a sequence detection rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "queries": { + "description": "Queries for selecting logs analyzed by the job.", + "items": { + "description": "Query for selecting logs analyzed by the threat hunting job.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] + }, + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" + ] + }, + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" + }, + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the query.", + "type": "string" + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean" + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string" + }, + "logFieldPath": { + "description": "The field in the log to match against the reference table.", + "type": "string" + }, + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", + "type": "string" + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tags": { + "description": "Tags for generated signals.", + "items": { + "type": "string" + }, + "type": "array" + }, + "thirdPartyCases": { + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets for each case.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + } + }, + "required": [ + "status" ], - "example": "team_links", - "type": "string", - "x-enum-varnames": [ - "TEAM_LINKS" - ] - } + "type": "object" + }, + "type": "array" }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Job type.", "type": "string" } }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message" + ], "type": "object" + }, + "jobName": { + "description": "Job name.", + "type": "string" + }, + "jobStatus": { + "description": "Job status.", + "type": "string" + }, + "modifiedAt": { + "description": "Last modification time of the job.", + "type": "string" } }, "type": "object" + }, + "id": { + "description": "ID of the job.", + "type": "string" + }, + "type": { + "description": "Type of payload.", + "enum": [ + "historicalDetectionsJob" + ], + "type": "string", + "x-enum-varnames": [ + "HISTORICALDETECTIONSJOB" + ] } }, "type": "object" - }, - "type": { - "default": "team", - "description": "Team type", - "enum": [ - "team" - ], - "example": "team", - "type": "string", - "x-enum-varnames": [ - "TEAM" - ] } }, - "required": [ - "attributes", - "type" - ], "type": "object" }, - "TeamUpdateAttributes": { - "description": "Team update attributes", + "ThreatHuntingJobResponseAttributes": { + "description": "Threat hunting job attributes.", "properties": { - "avatar": { - "description": "Unicode representation of the avatar for the team, limited to a single grapheme", - "example": "🥑", - "nullable": true, + "createdAt": { + "description": "Time when the job was created.", "type": "string" }, - "banner": { - "description": "Banner selection for the team", - "format": "int64", - "nullable": true, - "type": "integer" - }, - "description": { - "description": "Free-form markdown description/content for the team's homepage", + "createdByHandle": { + "description": "The handle of the user who created the job.", "type": "string" }, - "handle": { - "description": "The team's identifier", - "example": "example-team", - "maxLength": 195, + "createdByName": { + "description": "The name of the user who created the job.", "type": "string" }, - "hidden_modules": { - "description": "Collection of hidden modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "The name of the team", - "example": "Example Team", - "maxLength": 200, + "createdFromRuleId": { + "description": "ID of the rule used to create the job (if it is created from a rule).", "type": "string" }, - "visible_modules": { - "description": "Collection of visible modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "handle", - "name" - ], - "type": "object" - }, - "TeamUpdateRelationships": { - "description": "Team update relationships", - "properties": { - "team_links": { - "description": "Relationship between a team and a team link", + "jobDefinition": { + "description": "Definition of a threat hunting job.", "properties": { - "data": { - "description": "Related team links", + "calculatedFields": { + "description": "Calculated fields.", "items": { - "description": "Relationship between a link and a team", + "description": "Calculated field.", "properties": { - "id": { - "description": "The team link's identifier", - "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", "type": "string" }, - "type": { - "default": "team_links", - "description": "Team link type", + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string" + } + }, + "required": [ + "name", + "expression" + ], + "type": "object" + }, + "type": "array" + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration of the action in seconds. 0 indicates no expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "flaggedIPType": { + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED" + ] + }, + "userBehaviorName": { + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "condition": { + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", + "type": "string" + }, + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "status": { + "description": "Severity of the Security Signal.", "enum": [ - "team_links" + "info", + "low", + "medium", + "high", + "critical" ], - "example": "team_links", + "example": "critical", "type": "string", "x-enum-varnames": [ - "TEAM_LINKS" + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" ] } }, "required": [ - "id", - "type" + "status" ], "type": "object" }, "type": "array" }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "TeamUpdateRequest": { - "description": "Team update request", - "properties": { - "data": { - "description": "Team update request", - "properties": { - "attributes": { - "description": "Team update attributes", + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer" + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", + "example": [ + "service" + ], + "items": { + "description": "Field to group by.", + "type": "string" + }, + "type": "array" + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string" + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string" + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string" + }, + "options": { + "description": "Job options.", "properties": { - "avatar": { - "description": "Unicode representation of the avatar for the team, limited to a single grapheme", - "example": "🥑", - "nullable": true, - "type": "string" - }, - "banner": { - "description": "Banner selection for the team", - "format": "int64", - "nullable": true, - "type": "integer" - }, - "description": { - "description": "Free-form markdown description/content for the team's homepage", - "type": "string" + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] }, - "handle": { - "description": "The team's identifier", - "example": "example-team", - "maxLength": 195, - "type": "string" + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] }, - "hidden_modules": { - "description": "Collection of hidden modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } }, - "type": "array" + "type": "object" }, - "name": { - "description": "The name of the team", - "example": "Example Team", - "maxLength": 200, - "type": "string" + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] }, - "visible_modules": { - "description": "Collection of visible modules for the team", - "items": { - "description": "String identifier of the module", - "type": "string" + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", + "enum": [ + 1, + 2, + 7, + 14, + 21, + 28 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" + ] + }, + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", + "enum": [ + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" + ], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" + ] + } }, - "type": "array" - } - }, - "required": [ - "handle", - "name" - ], - "type": "object" - }, - "relationships": { - "description": "Team update relationships", - "properties": { - "team_links": { - "description": "Relationship between a team and a team link", + "type": "object" + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", "properties": { - "data": { - "description": "Related team links", + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", "items": { - "description": "Relationship between a link and a team", + "description": "Transition from a parent step to a child step within a sequence detection rule.", "properties": { - "id": { - "description": "The team link's identifier", - "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "child": { + "description": "Name of the child step.", "type": "string" }, - "type": { - "default": "team_links", - "description": "Team link type", + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", "enum": [ - "team_links" + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 ], - "example": "team_links", - "type": "string", + "format": "int32", + "type": "integer", "x-enum-varnames": [ - "TEAM_LINKS" + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" } }, - "required": [ - "id", - "type" - ], "type": "object" }, "type": "array" }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", - "type": "string" - } + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } + }, + "type": "object" }, - "type": "object" + "type": "array" + } + }, + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" } }, "type": "object" @@ -360868,834 +360679,1023 @@ }, "type": "object" }, - "type": { - "default": "team", - "description": "Team type", - "enum": [ - "team" - ], - "example": "team", - "type": "string", - "x-enum-varnames": [ - "TEAM" - ] - } - }, - "required": [ - "attributes", - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "TeamsField": { - "description": "Supported teams field.", - "enum": [ - "id", - "name", - "handle", - "summary", - "description", - "avatar", - "banner", - "visible_modules", - "hidden_modules", - "created_at", - "modified_at", - "user_count", - "link_count", - "team_links", - "user_team_permissions" - ], - "type": "string", - "x-enum-varnames": [ - "ID", - "NAME", - "HANDLE", - "SUMMARY", - "DESCRIPTION", - "AVATAR", - "BANNER", - "VISIBLE_MODULES", - "HIDDEN_MODULES", - "CREATED_AT", - "MODIFIED_AT", - "USER_COUNT", - "LINK_COUNT", - "TEAM_LINKS", - "USER_TEAM_PERMISSIONS" - ] - }, - "TeamsResponse": { - "description": "Response with multiple teams", - "properties": { - "data": { - "description": "Teams response data", - "items": { - "description": "A team", - "properties": { - "attributes": { - "description": "Team attributes", + "queries": { + "description": "Queries for selecting logs analyzed by the job.", + "items": { + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { - "avatar": { - "description": "Unicode representation of the avatar for the team, limited to a single grapheme", - "example": "🥑", - "nullable": true, - "type": "string" + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] }, - "banner": { - "description": "Banner selection for the team", - "format": "int64", - "nullable": true, - "type": "integer" + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" + ] }, - "created_at": { - "description": "Creation date of the team", - "format": "date-time", - "type": "string" + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" }, - "description": { - "description": "Free-form markdown description/content for the team's homepage", - "nullable": true, - "type": "string" + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" }, - "handle": { - "description": "The team's identifier", - "example": "example-team", - "maxLength": 195, - "type": "string" + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" }, - "hidden_modules": { - "description": "Collection of hidden modules for the team", + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", "items": { - "description": "String identifier of the module", + "description": "Field.", "type": "string" }, "type": "array" }, - "link_count": { - "description": "The number of links belonging to the team", - "format": "int32", - "maximum": 2147483647, - "readOnly": true, - "type": "integer" + "name": { + "description": "Name of the query.", + "type": "string" }, - "modified_at": { - "description": "Modification date of the team", - "format": "date-time", + "query": { + "description": "Query to run on logs.", + "example": "a > 3", "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean" }, - "name": { - "description": "The name of the team", - "example": "Example Team", - "maxLength": 200, + "columnName": { + "description": "The name of the column in the reference table.", "type": "string" }, - "summary": { - "description": "A brief summary of the team, derived from the `description`", - "maxLength": 120, - "nullable": true, + "logFieldPath": { + "description": "The field in the log to match against the reference table.", "type": "string" }, - "user_count": { - "description": "The number of users belonging to the team", - "format": "int32", - "maximum": 2147483647, - "readOnly": true, - "type": "integer" + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", + "type": "string" }, - "visible_modules": { - "description": "Collection of visible modules for the team", + "tableName": { + "description": "The name of the reference table.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tags": { + "description": "Tags for generated signals.", + "items": { + "type": "string" + }, + "type": "array" + }, + "thirdPartyCases": { + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets for each case.", "items": { - "description": "String identifier of the module", + "description": "Notification.", "type": "string" }, "type": "array" + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] } }, "required": [ - "handle", - "name" + "status" ], "type": "object" }, - "id": { - "description": "The team's identifier", - "example": "aeadc05e-98a8-11ec-ac2c-da7ad0900001", - "type": "string" - }, - "relationships": { - "description": "Resources related to a team", - "properties": { - "team_links": { - "description": "Relationship between a team and a team link", + "type": "array" + }, + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Job type.", + "type": "string" + } + }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message" + ], + "type": "object" + }, + "jobName": { + "description": "Job name.", + "type": "string" + }, + "jobStatus": { + "description": "Job status.", + "type": "string" + }, + "modifiedAt": { + "description": "Last modification time of the job.", + "type": "string" + } + }, + "type": "object" + }, + "ThreatHuntingJobResponseData": { + "description": "Threat hunting job response data.", + "properties": { + "attributes": { + "description": "Threat hunting job attributes.", + "properties": { + "createdAt": { + "description": "Time when the job was created.", + "type": "string" + }, + "createdByHandle": { + "description": "The handle of the user who created the job.", + "type": "string" + }, + "createdByName": { + "description": "The name of the user who created the job.", + "type": "string" + }, + "createdFromRuleId": { + "description": "ID of the rule used to create the job (if it is created from a rule).", + "type": "string" + }, + "jobDefinition": { + "description": "Definition of a threat hunting job.", + "properties": { + "calculatedFields": { + "description": "Calculated fields.", + "items": { + "description": "Calculated field.", "properties": { - "data": { - "description": "Related team links", + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string" + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string" + } + }, + "required": [ + "name", + "expression" + ], + "type": "object" + }, + "type": "array" + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", "items": { - "description": "Relationship between a link and a team", + "description": "Action to perform when a signal is triggered. Only available for Application Security rule type.", "properties": { - "id": { - "description": "The team link's identifier", - "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", - "type": "string" + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration of the action in seconds. 0 indicates no expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "flaggedIPType": { + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED" + ] + }, + "userBehaviorName": { + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.", + "type": "string" + } + }, + "type": "object" }, "type": { - "default": "team_links", - "description": "Team link type", + "description": "The action type.", "enum": [ - "team_links" + "block_ip", + "block_user", + "user_behavior", + "flag_ip" ], - "example": "team_links", "type": "string", "x-enum-varnames": [ - "TEAM_LINKS" + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP" ] } }, - "required": [ - "id", - "type" - ], "type": "object" }, "type": "array" }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "user_team_permissions": { - "description": "Relationship between a user team permission and a team", - "properties": { - "data": { - "description": "Related user team permission data", - "properties": { - "id": { - "description": "The ID of the user team permission", - "example": "UserTeamPermissions-aeadc05e-98a8-11ec-ac2c-da7ad0900001-416595", - "type": "string" - }, - "type": { - "default": "user_team_permissions", - "description": "User team permission type", - "enum": [ - "user_team_permissions" - ], - "example": "user_team_permissions", - "type": "string", - "x-enum-varnames": [ - "USER_TEAM_PERMISSIONS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - "links": { - "description": "Links attributes.", - "properties": { - "related": { - "description": "Related link.", - "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": { - "default": "team", - "description": "Team type", - "enum": [ - "team" - ], - "example": "team", - "type": "string", - "x-enum-varnames": [ - "TEAM" - ] - } - }, - "required": [ - "attributes", - "id", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "included": { - "description": "Resources related to the team", - "items": { - "description": "Included resources related to the team", - "oneOf": [ - { - "description": "User object returned by the API.", - "properties": { - "attributes": { - "description": "Attributes of user object returned by the API.", - "properties": { - "created_at": { - "description": "Creation time of the user.", - "format": "date-time", - "type": "string" - }, - "disabled": { - "description": "Whether the user is disabled.", - "type": "boolean" - }, - "email": { - "description": "Email of the user.", - "type": "string" - }, - "handle": { - "description": "Handle of the user.", - "type": "string" - }, - "icon": { - "description": "URL of the user's icon.", - "type": "string" - }, - "mfa_enabled": { - "description": "If user has MFA enabled.", - "readOnly": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time that the user was last modified.", - "format": "date-time", + "condition": { + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries.", "type": "string" }, "name": { - "description": "Name of the user.", - "nullable": true, + "description": "Name of the case.", "type": "string" }, - "service_account": { - "description": "Whether the user is a service account.", - "type": "boolean" + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" }, "status": { - "description": "Status of the user.", - "type": "string" - }, - "title": { - "description": "Title of the user.", - "nullable": true, - "type": "string" - }, - "verified": { - "description": "Whether the user is verified.", - "type": "boolean" + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] } }, + "required": [ + "status" + ], "type": "object" }, - "id": { - "description": "ID of the user.", + "type": "array" + }, + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer" + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.", + "example": [ + "service" + ], + "items": { + "description": "Field to group by.", "type": "string" }, - "relationships": { - "description": "Relationships of the user object returned by the API.", - "properties": { - "org": { - "description": "Relationship to an organization.", - "properties": { - "data": { - "description": "Relationship to organization object.", + "type": "array" + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string" + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string" + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string" + }, + "options": { + "description": "Job options.", + "properties": { + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION" + ] + }, + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "keepAlive": { + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "maxSignalDuration": { + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The duration in days after which a learned value is forgotten.", + "enum": [ + 1, + 2, + 7, + 14, + 21, + 28 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS" + ] + }, + "learningDuration": { + "default": 0, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.", + "enum": [ + 0, + 1, + 7 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS" + ] + }, + "learningMethod": { + "default": "duration", + "description": "The learning method used to determine when signals should be generated for values that weren't learned.", + "enum": [ + "duration", + "threshold" + ], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD" + ] + }, + "learningThreshold": { + "default": 0, + "description": "A number of occurrences after which signals will be generated for values that weren't learned.", + "enum": [ + 0, + 1 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE" + ] + } + }, + "type": "object" + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions defining the allowed order of steps and their evaluation windows.", + "items": { + "description": "Transition from a parent step to a child step within a sequence detection rule.", "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", + "child": { + "description": "Name of the child step.", "type": "string" }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", "enum": [ - "orgs" + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 ], - "example": "orgs", - "type": "string", + "format": "int32", + "type": "integer", "x-enum-varnames": [ - "ORGS" + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" ] + }, + "parent": { + "description": "Name of the parent step.", + "type": "string" } }, - "required": [ - "id", - "type" - ], "type": "object" - } + }, + "type": "array" }, - "required": [ - "data" - ], - "type": "object" - }, - "other_orgs": { - "description": "Relationship to organizations.", - "properties": { - "data": { - "description": "Relationships to organization objects.", - "example": [], - "items": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } + "steps": { + "description": "Steps that define the conditions to be matched in sequence.", + "items": { + "description": "Step definition for sequence detection containing the step name, condition, and evaluation window.", + "properties": { + "condition": { + "description": "Condition referencing rule queries (e.g., `a > 0`).", + "type": "string" }, - "required": [ - "id", - "type" - ], - "type": "object" + "evaluationWindow": { + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400 + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY" + ] + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string" + } }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" + "type": "object" + }, + "type": "array" + } }, - "other_users": { - "description": "Relationship to users.", - "properties": { - "data": { - "description": "Relationships to user objects.", - "example": [], - "items": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", + "type": "object" + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification targets for the logs that do not correspond to any of the cases.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] + }, + "rootQueries": { + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.", + "items": { + "description": "A query to be combined with the third party case query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", "type": "string" }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } + "type": "array" }, - "required": [ - "id", - "type" - ], - "type": "object" + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string" + } }, - "type": "array" - } + "type": "object" + }, + "type": "array" }, - "required": [ - "data" + "signalTitleTemplate": { + "description": "A template for the signal title; if omitted, the title is generated based on the case name.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "queries": { + "description": "Queries for selecting logs analyzed by the job.", + "items": { + "description": "Query for selecting logs analyzed by the threat hunting job.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" ], - "type": "object" + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE" + ] }, - "roles": { - "description": "Relationship to roles.", - "properties": { - "data": { - "description": "An array containing type and the unique identifier of a role.", - "items": { - "description": "Relationship to role object.", - "properties": { - "id": { - "description": "The unique identifier of the role.", - "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", - "type": "string" - }, - "type": { - "default": "roles", - "description": "Roles type.", - "enum": [ - "roles" - ], - "example": "roles", - "type": "string", - "x-enum-varnames": [ - "ROLES" - ] - } - }, - "type": "object" - }, - "type": "array" - } + "dataSource": { + "default": "logs", + "description": "Source of events, either logs, audit trail, or Datadog events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS" + ] + }, + "distinctFields": { + "description": "Field for which the cardinality is measured. Sent as an array.", + "items": { + "description": "Field.", + "type": "string" }, - "type": "object" + "type": "array" + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "hasOptionalGroupByFields": { + "default": false, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.", + "example": false, + "type": "boolean" + }, + "metrics": { + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.", + "items": { + "description": "Field.", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the query.", + "type": "string" + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string" } }, "type": "object" }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } + "type": "array" }, - "type": "object" - }, - { - "description": "Team link", - "properties": { - "attributes": { - "description": "Team link attributes", + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", "properties": { - "label": { - "description": "The link's label", - "example": "Link label", - "maxLength": 256, + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean" + }, + "columnName": { + "description": "The name of the column in the reference table.", "type": "string" }, - "position": { - "description": "The link's position, used to sort links for the team", - "format": "int32", - "maximum": 2147483647, - "type": "integer" + "logFieldPath": { + "description": "The field in the log to match against the reference table.", + "type": "string" }, - "team_id": { - "description": "ID of the team the link is associated with", - "readOnly": true, + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", "type": "string" }, - "url": { - "description": "The URL for the link", - "example": "https://example.com", + "tableName": { + "description": "The name of the reference table.", "type": "string" } }, - "required": [ - "label", - "url" - ], "type": "object" }, - "id": { - "description": "The team link's identifier", - "example": "b8626d7e-cedd-11eb-abf5-da7ad0900001", + "type": "array" + }, + "tags": { + "description": "Tags for generated signals.", + "items": { "type": "string" }, - "type": { - "default": "team_links", - "description": "Team link type", - "enum": [ - "team_links" - ], - "example": "team_links", - "type": "string", - "x-enum-varnames": [ - "TEAM_LINKS" - ] - } + "type": "array" }, - "required": [ - "attributes", - "id", - "type" - ], - "type": "object" - }, - { - "description": "A user's permissions for a given team", - "properties": { - "attributes": { - "description": "User team permission attributes", + "thirdPartyCases": { + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", "properties": { - "permissions": { - "description": "Object of team permission actions and boolean values that a logged in user can perform on this team.", - "readOnly": true, - "type": "object" + "name": { + "description": "Name of the case.", + "type": "string" + }, + "notifications": { + "description": "Notification targets for each case.", + "items": { + "description": "Notification.", + "type": "string" + }, + "type": "array" + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string" + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL" + ] } }, + "required": [ + "status" + ], "type": "object" }, - "id": { - "description": "The user team permission's identifier", - "example": "UserTeamPermissions-aeadc05e-98a8-11ec-ac2c-da7ad0900001-416595", - "type": "string" - }, - "type": { - "default": "user_team_permissions", - "description": "User team permission type", - "enum": [ - "user_team_permissions" - ], - "example": "user_team_permissions", - "type": "string", - "x-enum-varnames": [ - "USER_TEAM_PERMISSIONS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } - ] - }, - "type": "array" - }, - "links": { - "description": "Teams response links.", - "properties": { - "first": { - "description": "First link.", - "type": "string" - }, - "last": { - "description": "Last link.", - "nullable": true, - "type": "string" - }, - "next": { - "description": "Next link.", - "type": "string" - }, - "prev": { - "description": "Previous link.", - "nullable": true, - "type": "string" - }, - "self": { - "description": "Current link.", - "type": "string" - } - }, - "type": "object" - }, - "meta": { - "description": "Teams response metadata.", - "properties": { - "pagination": { - "description": "Teams response metadata.", - "properties": { - "first_offset": { - "description": "The first offset.", - "format": "int64", - "type": "integer" - }, - "last_offset": { - "description": "The last offset.", - "format": "int64", - "type": "integer" - }, - "limit": { - "description": "Pagination limit.", - "format": "int64", - "type": "integer" - }, - "next_offset": { - "description": "The next offset.", - "format": "int64", - "type": "integer" - }, - "offset": { - "description": "The offset.", - "format": "int64", - "type": "integer" - }, - "prev_offset": { - "description": "The previous offset.", - "format": "int64", - "type": "integer" + "type": "array" }, - "total": { - "description": "Total results.", + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, "format": "int64", "type": "integer" }, "type": { - "description": "Offset type.", + "description": "Job type.", "type": "string" } }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message" + ], "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "TeamsResponseLinks": { - "description": "Teams response links.", - "properties": { - "first": { - "description": "First link.", - "type": "string" - }, - "last": { - "description": "Last link.", - "nullable": true, - "type": "string" - }, - "next": { - "description": "Next link.", - "type": "string" - }, - "prev": { - "description": "Previous link.", - "nullable": true, - "type": "string" - }, - "self": { - "description": "Current link.", - "type": "string" - } - }, - "type": "object" - }, - "TeamsResponseMeta": { - "description": "Teams response metadata.", - "properties": { - "pagination": { - "description": "Teams response metadata.", - "properties": { - "first_offset": { - "description": "The first offset.", - "format": "int64", - "type": "integer" - }, - "last_offset": { - "description": "The last offset.", - "format": "int64", - "type": "integer" - }, - "limit": { - "description": "Pagination limit.", - "format": "int64", - "type": "integer" - }, - "next_offset": { - "description": "The next offset.", - "format": "int64", - "type": "integer" - }, - "offset": { - "description": "The offset.", - "format": "int64", - "type": "integer" }, - "prev_offset": { - "description": "The previous offset.", - "format": "int64", - "type": "integer" + "jobName": { + "description": "Job name.", + "type": "string" }, - "total": { - "description": "Total results.", - "format": "int64", - "type": "integer" + "jobStatus": { + "description": "Job status.", + "type": "string" }, - "type": { - "description": "Offset type.", + "modifiedAt": { + "description": "Last modification time of the job.", "type": "string" } }, "type": "object" - } - }, - "type": "object" - }, - "TeamsResponseMetaPagination": { - "description": "Teams response metadata.", - "properties": { - "first_offset": { - "description": "The first offset.", - "format": "int64", - "type": "integer" - }, - "last_offset": { - "description": "The last offset.", - "format": "int64", - "type": "integer" - }, - "limit": { - "description": "Pagination limit.", - "format": "int64", - "type": "integer" }, - "next_offset": { - "description": "The next offset.", - "format": "int64", - "type": "integer" - }, - "offset": { - "description": "The offset.", - "format": "int64", - "type": "integer" - }, - "prev_offset": { - "description": "The previous offset.", - "format": "int64", - "type": "integer" - }, - "total": { - "description": "Total results.", - "format": "int64", - "type": "integer" + "id": { + "description": "ID of the job.", + "type": "string" }, "type": { - "description": "Offset type.", - "type": "string" + "description": "Type of payload.", + "enum": [ + "historicalDetectionsJob" + ], + "type": "string", + "x-enum-varnames": [ + "HISTORICALDETECTIONSJOB" + ] } }, "type": "object" @@ -694426,7 +694426,7 @@ "x-unstable": "**Note**: This endpoint is deprecated." } }, - "/api/v2/siem-historical-detections/histsignals": { + "/api/v2/siem-threat-hunting/histsignals": { "get": { "description": "List hist signals.", "operationId": "ListSecurityMonitoringHistsignals", @@ -694758,7 +694758,7 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/histsignals/search": { + "/api/v2/siem-threat-hunting/histsignals/search": { "get": { "description": "Search hist signals.", "operationId": "SearchSecurityMonitoringHistsignals", @@ -695082,13 +695082,13 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/histsignals/{histsignal_id}": { + "/api/v2/siem-threat-hunting/histsignals/{histsignal_id}": { "get": { "description": "Get a hist signal's details.", "operationId": "GetSecurityMonitoringHistsignal", "parameters": [ { - "description": "The ID of the historical signal.", + "description": "The ID of the threat hunting signal.", "in": "path", "name": "histsignal_id", "required": true, @@ -695318,10 +695318,10 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs": { + "/api/v2/siem-threat-hunting/jobs": { "get": { - "description": "List historical jobs.", - "operationId": "ListHistoricalJobs", + "description": "List threat hunting jobs.", + "operationId": "ListThreatHuntingJobs", "parameters": [ { "description": "Size for a given page. The maximum allowed value is 100.", @@ -695373,15 +695373,15 @@ "content": { "application/json": { "schema": { - "description": "List of historical jobs.", + "description": "List of threat hunting jobs.", "properties": { "data": { - "description": "Array containing the list of historical jobs.", + "description": "Array containing the list of threat hunting jobs.", "items": { - "description": "Historical job response data.", + "description": "Threat hunting job response data.", "properties": { "attributes": { - "description": "Historical job attributes.", + "description": "Threat hunting job attributes.", "properties": { "createdAt": { "description": "Time when the job was created.", @@ -695400,7 +695400,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -695944,7 +695944,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -696293,7 +696293,7 @@ "AuthZ": [] } ], - "summary": "List historical jobs", + "summary": "List threat hunting jobs", "tags": [ "Security Monitoring" ], @@ -696301,22 +696301,22 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." }, "post": { - "description": "Run a historical job.", - "operationId": "RunHistoricalJob", + "description": "Run a threat hunting job.", + "operationId": "RunThreatHuntingJob", "requestBody": { "content": { "application/json": { "schema": { - "description": "Run a historical job request.", + "description": "Run a threat hunting job request.", "properties": { "data": { - "description": "Data for running a historical job request.", + "description": "Data for running a threat hunting job request.", "properties": { "attributes": { - "description": "Run a historical job request.", + "description": "Run a threat hunting job request.", "properties": { "fromRule": { - "description": "Definition of a historical job based on a security monitoring rule.", + "description": "Definition of a threat hunting job based on a security monitoring rule.", "properties": { "from": { "description": "Starting time of data analyzed by the job.", @@ -696364,7 +696364,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -696908,7 +696908,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -697138,7 +697138,7 @@ "content": { "application/json": { "schema": { - "description": "Run a historical job response.", + "description": "Run a threat hunting job response.", "properties": { "data": { "description": "The definition of `JobCreateResponseData` object.", @@ -697319,7 +697319,7 @@ ] } ], - "summary": "Run a historical job", + "summary": "Run a threat hunting job", "tags": [ "Security Monitoring" ], @@ -697334,7 +697334,7 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs/signal_convert": { + "/api/v2/siem-threat-hunting/jobs/signal_convert": { "post": { "description": "Convert a job result to a signal.", "operationId": "ConvertJobResultToSignal", @@ -697342,13 +697342,13 @@ "content": { "application/json": { "schema": { - "description": "Request for converting historical job results to signals.", + "description": "Request for converting threat hunting job results to signals.", "properties": { "data": { - "description": "Data for converting historical job results to signals.", + "description": "Data for converting threat hunting job results to signals.", "properties": { "attributes": { - "description": "Attributes for converting historical job results to signals.", + "description": "Attributes for converting threat hunting job results to signals.", "properties": { "id": { "description": "Request ID.", @@ -697587,10 +697587,10 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs/{job_id}": { + "/api/v2/siem-threat-hunting/jobs/{job_id}": { "delete": { "description": "Delete an existing job.", - "operationId": "DeleteHistoricalJob", + "operationId": "DeleteThreatHuntingJob", "parameters": [ { "description": "The ID of the job.", @@ -697793,7 +697793,7 @@ }, "get": { "description": "Get a job's details.", - "operationId": "GetHistoricalJob", + "operationId": "GetThreatHuntingJob", "parameters": [ { "description": "The ID of the job.", @@ -697810,13 +697810,13 @@ "content": { "application/json": { "schema": { - "description": "Historical job response.", + "description": "Threat hunting job response.", "properties": { "data": { - "description": "Historical job response data.", + "description": "Threat hunting job response data.", "properties": { "attributes": { - "description": "Historical job attributes.", + "description": "Threat hunting job attributes.", "properties": { "createdAt": { "description": "Time when the job was created.", @@ -697835,7 +697835,7 @@ "type": "string" }, "jobDefinition": { - "description": "Definition of a historical job.", + "description": "Definition of a threat hunting job.", "properties": { "calculatedFields": { "description": "Calculated fields.", @@ -698379,7 +698379,7 @@ "queries": { "description": "Queries for selecting logs analyzed by the job.", "items": { - "description": "Query for selecting logs analyzed by the historical job.", + "description": "Query for selecting logs analyzed by the threat hunting job.", "properties": { "aggregation": { "description": "The aggregation type.", @@ -698758,10 +698758,10 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs/{job_id}/cancel": { + "/api/v2/siem-threat-hunting/jobs/{job_id}/cancel": { "patch": { - "description": "Cancel a historical job.", - "operationId": "CancelHistoricalJob", + "description": "Cancel a threat hunting job.", + "operationId": "CancelThreatHuntingJob", "parameters": [ { "description": "The ID of the job.", @@ -698957,7 +698957,7 @@ ] } ], - "summary": "Cancel a historical job", + "summary": "Cancel a threat hunting job", "tags": [ "Security Monitoring" ], @@ -698971,7 +698971,7 @@ "x-unstable": "**Note**: This endpoint is in beta and may be subject to changes.\nPlease check the documentation regularly for updates." } }, - "/api/v2/siem-historical-detections/jobs/{job_id}/histsignals": { + "/api/v2/siem-threat-hunting/jobs/{job_id}/histsignals": { "get": { "description": "Get a job's hist signals.", "operationId": "GetSecurityMonitoringHistsignalsByJobId",