Skip to content

Commit adb517d

Browse files
author
ci.datadog-api-spec
committed
Regenerate client from commit 2a2b481 of spec repo
1 parent 1f9083c commit adb517d

15 files changed

+294
-2
lines changed

.generated-info

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"spec_repo_commit": "df31e44",
3-
"generated": "2025-07-28 19:54:45.232"
2+
"spec_repo_commit": "2a2b481",
3+
"generated": "2025-07-31 08:51:34.198"
44
}

.generator/schemas/v2/openapi.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34920,6 +34920,27 @@ components:
3492034920
- $ref: '#/components/schemas/SecurityMonitoringStandardRulePayload'
3492134921
- $ref: '#/components/schemas/SecurityMonitoringSignalRulePayload'
3492234922
- $ref: '#/components/schemas/CloudConfigurationRulePayload'
34923+
SecurityMonitoringSchedulingOptions:
34924+
description: Options for scheduled rules. When this field is present, the rule
34925+
runs based on the schedule. When absent, it runs real-time on ingested logs.
34926+
nullable: true
34927+
properties:
34928+
rrule:
34929+
description: Schedule for the rule queries, written in RRULE syntax. See
34930+
[RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html)
34931+
for syntax reference.
34932+
example: FREQ=HOURLY;INTERVAL=1;
34933+
type: string
34934+
start:
34935+
description: Start date for the schedule, in ISO 8601 format without timezone.
34936+
example: '2025-07-14T12:00:00'
34937+
type: string
34938+
timezone:
34939+
description: Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
34940+
format.
34941+
example: America/New_York
34942+
type: string
34943+
type: object
3492334944
SecurityMonitoringSignal:
3492434945
description: Object description of a security signal.
3492534946
properties:
@@ -35598,6 +35619,12 @@ components:
3559835619
SecurityMonitoringStandardRuleCreatePayload:
3559935620
description: Create a new rule.
3560035621
properties:
35622+
calculatedFields:
35623+
description: Calculated fields. Only allowed for scheduled rules, i.e. when
35624+
schedulingOptions is also defined.
35625+
items:
35626+
$ref: '#/components/schemas/CalculatedField'
35627+
type: array
3560135628
cases:
3560235629
description: Cases for generating signals.
3560335630
example: []
@@ -35650,6 +35677,8 @@ components:
3565035677
items:
3565135678
$ref: '#/components/schemas/SecurityMonitoringReferenceTable'
3565235679
type: array
35680+
schedulingOptions:
35681+
$ref: '#/components/schemas/SecurityMonitoringSchedulingOptions'
3565335682
tags:
3565435683
description: Tags for generated signals.
3565535684
example:
@@ -35795,6 +35824,14 @@ components:
3579535824
example: false
3579635825
readOnly: true
3579735826
type: boolean
35827+
index:
35828+
description: '**This field is currently unstable and might be removed in
35829+
a minor version upgrade.**
35830+
35831+
The index to run the query on, if the `dataSource` is `logs`. Only used
35832+
for scheduled rules, i.e. when the `schedulingOptions` field is present
35833+
in the rule payload.'
35834+
type: string
3579835835
metric:
3579935836
deprecated: true
3580035837
description: '(Deprecated) The target field to aggregate over when using

docs/datadog_api_client.v2.model.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15201,6 +15201,13 @@ datadog\_api\_client.v2.model.security\_monitoring\_rule\_validate\_payload modu
1520115201
:members:
1520215202
:show-inheritance:
1520315203

15204+
datadog\_api\_client.v2.model.security\_monitoring\_scheduling\_options module
15205+
------------------------------------------------------------------------------
15206+
15207+
.. automodule:: datadog_api_client.v2.model.security_monitoring_scheduling_options
15208+
:members:
15209+
:show-inheritance:
15210+
1520415211
datadog\_api\_client.v2.model.security\_monitoring\_signal module
1520515212
-----------------------------------------------------------------
1520615213

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
"""
2+
Create a scheduled detection rule returns "OK" response
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
7+
from datadog_api_client.v2.model.security_monitoring_rule_case_create import SecurityMonitoringRuleCaseCreate
8+
from datadog_api_client.v2.model.security_monitoring_rule_evaluation_window import (
9+
SecurityMonitoringRuleEvaluationWindow,
10+
)
11+
from datadog_api_client.v2.model.security_monitoring_rule_keep_alive import SecurityMonitoringRuleKeepAlive
12+
from datadog_api_client.v2.model.security_monitoring_rule_max_signal_duration import (
13+
SecurityMonitoringRuleMaxSignalDuration,
14+
)
15+
from datadog_api_client.v2.model.security_monitoring_rule_options import SecurityMonitoringRuleOptions
16+
from datadog_api_client.v2.model.security_monitoring_rule_query_aggregation import (
17+
SecurityMonitoringRuleQueryAggregation,
18+
)
19+
from datadog_api_client.v2.model.security_monitoring_rule_severity import SecurityMonitoringRuleSeverity
20+
from datadog_api_client.v2.model.security_monitoring_rule_type_create import SecurityMonitoringRuleTypeCreate
21+
from datadog_api_client.v2.model.security_monitoring_scheduling_options import SecurityMonitoringSchedulingOptions
22+
from datadog_api_client.v2.model.security_monitoring_standard_rule_create_payload import (
23+
SecurityMonitoringStandardRuleCreatePayload,
24+
)
25+
from datadog_api_client.v2.model.security_monitoring_standard_rule_query import SecurityMonitoringStandardRuleQuery
26+
27+
body = SecurityMonitoringStandardRuleCreatePayload(
28+
name="Example-Security-Monitoring",
29+
queries=[
30+
SecurityMonitoringStandardRuleQuery(
31+
query="@test:true",
32+
aggregation=SecurityMonitoringRuleQueryAggregation.COUNT,
33+
group_by_fields=[],
34+
distinct_fields=[],
35+
index="main",
36+
),
37+
],
38+
filters=[],
39+
cases=[
40+
SecurityMonitoringRuleCaseCreate(
41+
name="",
42+
status=SecurityMonitoringRuleSeverity.INFO,
43+
condition="a > 0",
44+
notifications=[],
45+
),
46+
],
47+
options=SecurityMonitoringRuleOptions(
48+
evaluation_window=SecurityMonitoringRuleEvaluationWindow.FIFTEEN_MINUTES,
49+
keep_alive=SecurityMonitoringRuleKeepAlive.ONE_HOUR,
50+
max_signal_duration=SecurityMonitoringRuleMaxSignalDuration.ONE_DAY,
51+
),
52+
message="Test rule",
53+
tags=[],
54+
is_enabled=True,
55+
type=SecurityMonitoringRuleTypeCreate.LOG_DETECTION,
56+
scheduling_options=SecurityMonitoringSchedulingOptions(
57+
rrule="FREQ=HOURLY;INTERVAL=2;",
58+
start="2025-06-18T12:00:00",
59+
timezone="Europe/Paris",
60+
),
61+
)
62+
63+
configuration = Configuration()
64+
with ApiClient(configuration) as api_client:
65+
api_instance = SecurityMonitoringApi(api_client)
66+
response = api_instance.create_security_monitoring_rule(body=body)
67+
68+
print(response)

src/datadog_api_client/v2/model/security_monitoring_rule_create_payload.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ def __init__(self, **kwargs):
1515
"""
1616
Create a new rule.
1717
18+
:param calculated_fields: Calculated fields. Only allowed for scheduled rules, i.e. when schedulingOptions is also defined.
19+
:type calculated_fields: [CalculatedField], optional
20+
1821
:param cases: Cases for generating signals.
1922
:type cases: [SecurityMonitoringRuleCaseCreate]
2023
@@ -45,6 +48,9 @@ def __init__(self, **kwargs):
4548
:param reference_tables: Reference tables for the rule.
4649
:type reference_tables: [SecurityMonitoringReferenceTable], optional
4750
51+
:param scheduling_options: Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.
52+
:type scheduling_options: SecurityMonitoringSchedulingOptions, none_type, optional
53+
4854
:param tags: Tags for generated signals.
4955
:type tags: [str], optional
5056

src/datadog_api_client/v2/model/security_monitoring_rule_query.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ def __init__(self, **kwargs):
3333
:param has_optional_group_by_fields: When false, events without a group-by value are ignored by the rule. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.
3434
:type has_optional_group_by_fields: bool, optional
3535
36+
:param index: **This field is currently unstable and might be removed in a minor version upgrade.**
37+
The index to run the query on, if the `dataSource` is `logs`. Only used for scheduled rules, i.e. when the `schedulingOptions` field is present in the rule payload.
38+
:type index: str, optional
39+
3640
:param metric: (Deprecated) The target field to aggregate over when using the sum or max
3741
aggregations. `metrics` field should be used instead.
3842
:type metric: str, optional
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
# This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
# Copyright 2019-Present Datadog, Inc.
4+
from __future__ import annotations
5+
6+
from typing import Union
7+
8+
from datadog_api_client.model_utils import (
9+
ModelNormal,
10+
cached_property,
11+
unset,
12+
UnsetType,
13+
)
14+
15+
16+
class SecurityMonitoringSchedulingOptions(ModelNormal):
17+
_nullable = True
18+
19+
@cached_property
20+
def openapi_types(_):
21+
return {
22+
"rrule": (str,),
23+
"start": (str,),
24+
"timezone": (str,),
25+
}
26+
27+
attribute_map = {
28+
"rrule": "rrule",
29+
"start": "start",
30+
"timezone": "timezone",
31+
}
32+
33+
def __init__(
34+
self_,
35+
rrule: Union[str, UnsetType] = unset,
36+
start: Union[str, UnsetType] = unset,
37+
timezone: Union[str, UnsetType] = unset,
38+
**kwargs,
39+
):
40+
"""
41+
Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.
42+
43+
:param rrule: Schedule for the rule queries, written in RRULE syntax. See `RFC <https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html>`_ for syntax reference.
44+
:type rrule: str, optional
45+
46+
:param start: Start date for the schedule, in ISO 8601 format without timezone.
47+
:type start: str, optional
48+
49+
:param timezone: Time zone of the start date, in the `tz database <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>`_ format.
50+
:type timezone: str, optional
51+
"""
52+
if rrule is not unset:
53+
kwargs["rrule"] = rrule
54+
if start is not unset:
55+
kwargs["start"] = start
56+
if timezone is not unset:
57+
kwargs["timezone"] = timezone
58+
super().__init__(kwargs)

src/datadog_api_client/v2/model/security_monitoring_standard_rule_create_payload.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,20 @@
88
from datadog_api_client.model_utils import (
99
ModelNormal,
1010
cached_property,
11+
none_type,
1112
unset,
1213
UnsetType,
1314
)
1415

1516

1617
if TYPE_CHECKING:
18+
from datadog_api_client.v2.model.calculated_field import CalculatedField
1719
from datadog_api_client.v2.model.security_monitoring_rule_case_create import SecurityMonitoringRuleCaseCreate
1820
from datadog_api_client.v2.model.security_monitoring_filter import SecurityMonitoringFilter
1921
from datadog_api_client.v2.model.security_monitoring_rule_options import SecurityMonitoringRuleOptions
2022
from datadog_api_client.v2.model.security_monitoring_standard_rule_query import SecurityMonitoringStandardRuleQuery
2123
from datadog_api_client.v2.model.security_monitoring_reference_table import SecurityMonitoringReferenceTable
24+
from datadog_api_client.v2.model.security_monitoring_scheduling_options import SecurityMonitoringSchedulingOptions
2225
from datadog_api_client.v2.model.security_monitoring_third_party_rule_case_create import (
2326
SecurityMonitoringThirdPartyRuleCaseCreate,
2427
)
@@ -28,19 +31,24 @@
2831
class SecurityMonitoringStandardRuleCreatePayload(ModelNormal):
2932
@cached_property
3033
def openapi_types(_):
34+
from datadog_api_client.v2.model.calculated_field import CalculatedField
3135
from datadog_api_client.v2.model.security_monitoring_rule_case_create import SecurityMonitoringRuleCaseCreate
3236
from datadog_api_client.v2.model.security_monitoring_filter import SecurityMonitoringFilter
3337
from datadog_api_client.v2.model.security_monitoring_rule_options import SecurityMonitoringRuleOptions
3438
from datadog_api_client.v2.model.security_monitoring_standard_rule_query import (
3539
SecurityMonitoringStandardRuleQuery,
3640
)
3741
from datadog_api_client.v2.model.security_monitoring_reference_table import SecurityMonitoringReferenceTable
42+
from datadog_api_client.v2.model.security_monitoring_scheduling_options import (
43+
SecurityMonitoringSchedulingOptions,
44+
)
3845
from datadog_api_client.v2.model.security_monitoring_third_party_rule_case_create import (
3946
SecurityMonitoringThirdPartyRuleCaseCreate,
4047
)
4148
from datadog_api_client.v2.model.security_monitoring_rule_type_create import SecurityMonitoringRuleTypeCreate
4249

4350
return {
51+
"calculated_fields": ([CalculatedField],),
4452
"cases": ([SecurityMonitoringRuleCaseCreate],),
4553
"filters": ([SecurityMonitoringFilter],),
4654
"group_signals_by": ([str],),
@@ -51,12 +59,14 @@ def openapi_types(_):
5159
"options": (SecurityMonitoringRuleOptions,),
5260
"queries": ([SecurityMonitoringStandardRuleQuery],),
5361
"reference_tables": ([SecurityMonitoringReferenceTable],),
62+
"scheduling_options": (SecurityMonitoringSchedulingOptions,),
5463
"tags": ([str],),
5564
"third_party_cases": ([SecurityMonitoringThirdPartyRuleCaseCreate],),
5665
"type": (SecurityMonitoringRuleTypeCreate,),
5766
}
5867

5968
attribute_map = {
69+
"calculated_fields": "calculatedFields",
6070
"cases": "cases",
6171
"filters": "filters",
6272
"group_signals_by": "groupSignalsBy",
@@ -67,6 +77,7 @@ def openapi_types(_):
6777
"options": "options",
6878
"queries": "queries",
6979
"reference_tables": "referenceTables",
80+
"scheduling_options": "schedulingOptions",
7081
"tags": "tags",
7182
"third_party_cases": "thirdPartyCases",
7283
"type": "type",
@@ -80,10 +91,12 @@ def __init__(
8091
name: str,
8192
options: SecurityMonitoringRuleOptions,
8293
queries: List[SecurityMonitoringStandardRuleQuery],
94+
calculated_fields: Union[List[CalculatedField], UnsetType] = unset,
8395
filters: Union[List[SecurityMonitoringFilter], UnsetType] = unset,
8496
group_signals_by: Union[List[str], UnsetType] = unset,
8597
has_extended_title: Union[bool, UnsetType] = unset,
8698
reference_tables: Union[List[SecurityMonitoringReferenceTable], UnsetType] = unset,
99+
scheduling_options: Union[SecurityMonitoringSchedulingOptions, none_type, UnsetType] = unset,
87100
tags: Union[List[str], UnsetType] = unset,
88101
third_party_cases: Union[List[SecurityMonitoringThirdPartyRuleCaseCreate], UnsetType] = unset,
89102
type: Union[SecurityMonitoringRuleTypeCreate, UnsetType] = unset,
@@ -92,6 +105,9 @@ def __init__(
92105
"""
93106
Create a new rule.
94107
108+
:param calculated_fields: Calculated fields. Only allowed for scheduled rules, i.e. when schedulingOptions is also defined.
109+
:type calculated_fields: [CalculatedField], optional
110+
95111
:param cases: Cases for generating signals.
96112
:type cases: [SecurityMonitoringRuleCaseCreate]
97113
@@ -122,6 +138,9 @@ def __init__(
122138
:param reference_tables: Reference tables for the rule.
123139
:type reference_tables: [SecurityMonitoringReferenceTable], optional
124140
141+
:param scheduling_options: Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.
142+
:type scheduling_options: SecurityMonitoringSchedulingOptions, none_type, optional
143+
125144
:param tags: Tags for generated signals.
126145
:type tags: [str], optional
127146
@@ -131,6 +150,8 @@ def __init__(
131150
:param type: The rule type.
132151
:type type: SecurityMonitoringRuleTypeCreate, optional
133152
"""
153+
if calculated_fields is not unset:
154+
kwargs["calculated_fields"] = calculated_fields
134155
if filters is not unset:
135156
kwargs["filters"] = filters
136157
if group_signals_by is not unset:
@@ -139,6 +160,8 @@ def __init__(
139160
kwargs["has_extended_title"] = has_extended_title
140161
if reference_tables is not unset:
141162
kwargs["reference_tables"] = reference_tables
163+
if scheduling_options is not unset:
164+
kwargs["scheduling_options"] = scheduling_options
142165
if tags is not unset:
143166
kwargs["tags"] = tags
144167
if third_party_cases is not unset:

0 commit comments

Comments
 (0)