Skip to content

Commit 621bbb5

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add SDS rule should_save_match field (#31296)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent c1e8a1c commit 621bbb5

File tree

7 files changed

+179
-8
lines changed

7 files changed

+179
-8
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.6",
7-
"regenerated": "2025-08-27 08:46:32.428802",
8-
"spec_repo_commit": "98e33711"
7+
"regenerated": "2025-08-27 15:02:45.796802",
8+
"spec_repo_commit": "62a19e45"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2025-08-27 08:46:42.766653",
13-
"spec_repo_commit": "98e33711"
12+
"regenerated": "2025-08-27 15:02:55.959409",
13+
"spec_repo_commit": "62a19e45"
1414
}
1515
}
1616
}

content/en/api/v2/sensitive-data-scanner/examples.json

Lines changed: 8 additions & 4 deletions
Large diffs are not rendered by default.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"meta": {},
3+
"data": {
4+
"type": "sensitive_data_scanner_rule",
5+
"attributes": {
6+
"name": "Example-Sensitive-Data-Scanner",
7+
"pattern": "pattern",
8+
"text_replacement": {
9+
"type": "replacement_string",
10+
"replacement_string": "REDACTED",
11+
"should_save_match": true
12+
},
13+
"tags": [
14+
"sensitive_data:true"
15+
],
16+
"is_enabled": true,
17+
"priority": 1
18+
},
19+
"relationships": {
20+
"group": {
21+
"data": {
22+
"type": "sensitive_data_scanner_group",
23+
"id": "string"
24+
}
25+
}
26+
}
27+
}
28+
}

data/api/v2/CodeExamples.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,6 +1377,11 @@
13771377
"group": "sensitive_data_scanner",
13781378
"suffix": "",
13791379
"description": "Create Scanning Rule returns \"OK\" response"
1380+
},
1381+
{
1382+
"group": "sensitive_data_scanner",
1383+
"suffix": "_502667299",
1384+
"description": "Create Scanning Rule with should_save_match returns \"OK\" response"
13801385
}
13811386
],
13821387
"DeleteScanningGroup": [

data/api/v2/full_spec.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40118,6 +40118,12 @@ components:
4011840118
replacement_string:
4011940119
description: Required if type == 'replacement_string'.
4012040120
type: string
40121+
should_save_match:
40122+
description: "Only valid when type == `replacement_string`. When enabled,
40123+
matches can be unmasked in logs by users with \u2018Data Scanner Unmask\u2019
40124+
permission. As a security best practice, avoid masking for highly-sensitive,
40125+
long-lived data."
40126+
type: boolean
4012140127
type:
4012240128
$ref: '#/components/schemas/SensitiveDataScannerTextReplacementType'
4012340129
type: object

data/api/v2/full_spec_deref.json

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283854,6 +283854,10 @@
283854283854
"description": "Required if type == 'replacement_string'.",
283855283855
"type": "string"
283856283856
},
283857+
"should_save_match": {
283858+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
283859+
"type": "boolean"
283860+
},
283857283861
"type": {
283858283862
"default": "none",
283859283863
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -284093,6 +284097,10 @@
284093284097
"description": "Required if type == 'replacement_string'.",
284094284098
"type": "string"
284095284099
},
284100+
"should_save_match": {
284101+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
284102+
"type": "boolean"
284103+
},
284096284104
"type": {
284097284105
"default": "none",
284098284106
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -284480,6 +284488,10 @@
284480284488
"description": "Required if type == 'replacement_string'.",
284481284489
"type": "string"
284482284490
},
284491+
"should_save_match": {
284492+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
284493+
"type": "boolean"
284494+
},
284483284495
"type": {
284484284496
"default": "none",
284485284497
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -284935,6 +284947,10 @@
284935284947
"description": "Required if type == 'replacement_string'.",
284936284948
"type": "string"
284937284949
},
284950+
"should_save_match": {
284951+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
284952+
"type": "boolean"
284953+
},
284938284954
"type": {
284939284955
"default": "none",
284940284956
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -287049,6 +287065,10 @@
287049287065
"description": "Required if type == 'replacement_string'.",
287050287066
"type": "string"
287051287067
},
287068+
"should_save_match": {
287069+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
287070+
"type": "boolean"
287071+
},
287052287072
"type": {
287053287073
"default": "none",
287054287074
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -287176,6 +287196,10 @@
287176287196
"description": "Required if type == 'replacement_string'.",
287177287197
"type": "string"
287178287198
},
287199+
"should_save_match": {
287200+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
287201+
"type": "boolean"
287202+
},
287179287203
"type": {
287180287204
"default": "none",
287181287205
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -287388,6 +287412,10 @@
287388287412
"description": "Required if type == 'replacement_string'.",
287389287413
"type": "string"
287390287414
},
287415+
"should_save_match": {
287416+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
287417+
"type": "boolean"
287418+
},
287391287419
"type": {
287392287420
"default": "none",
287393287421
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -287690,6 +287718,10 @@
287690287718
"description": "Required if type == 'replacement_string'.",
287691287719
"type": "string"
287692287720
},
287721+
"should_save_match": {
287722+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
287723+
"type": "boolean"
287724+
},
287693287725
"type": {
287694287726
"default": "none",
287695287727
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -287960,6 +287992,10 @@
287960287992
"description": "Required if type == 'replacement_string'.",
287961287993
"type": "string"
287962287994
},
287995+
"should_save_match": {
287996+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
287997+
"type": "boolean"
287998+
},
287963287999
"type": {
287964288000
"default": "none",
287965288001
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -288180,6 +288216,10 @@
288180288216
"description": "Required if type == 'replacement_string'.",
288181288217
"type": "string"
288182288218
},
288219+
"should_save_match": {
288220+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
288221+
"type": "boolean"
288222+
},
288183288223
"type": {
288184288224
"default": "none",
288185288225
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -288391,6 +288431,10 @@
288391288431
"description": "Required if type == 'replacement_string'.",
288392288432
"type": "string"
288393288433
},
288434+
"should_save_match": {
288435+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
288436+
"type": "boolean"
288437+
},
288394288438
"type": {
288395288439
"default": "none",
288396288440
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -288882,6 +288926,10 @@
288882288926
"description": "Required if type == 'replacement_string'.",
288883288927
"type": "string"
288884288928
},
288929+
"should_save_match": {
288930+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
288931+
"type": "boolean"
288932+
},
288885288933
"type": {
288886288934
"default": "none",
288887288935
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -587831,6 +587879,10 @@
587831587879
"description": "Required if type == 'replacement_string'.",
587832587880
"type": "string"
587833587881
},
587882+
"should_save_match": {
587883+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
587884+
"type": "boolean"
587885+
},
587834587886
"type": {
587835587887
"default": "none",
587836587888
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -589720,6 +589772,10 @@
589720589772
"description": "Required if type == 'replacement_string'.",
589721589773
"type": "string"
589722589774
},
589775+
"should_save_match": {
589776+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
589777+
"type": "boolean"
589778+
},
589723589779
"type": {
589724589780
"default": "none",
589725589781
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -589960,6 +590016,10 @@
589960590016
"description": "Required if type == 'replacement_string'.",
589961590017
"type": "string"
589962590018
},
590019+
"should_save_match": {
590020+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
590021+
"type": "boolean"
590022+
},
589963590023
"type": {
589964590024
"default": "none",
589965590025
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",
@@ -590532,6 +590592,10 @@
590532590592
"description": "Required if type == 'replacement_string'.",
590533590593
"type": "string"
590534590594
},
590595+
"should_save_match": {
590596+
"description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with ‘Data Scanner Unmask’ permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.",
590597+
"type": "boolean"
590598+
},
590535590599
"type": {
590536590600
"default": "none",
590537590601
"description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end.",

0 commit comments

Comments
 (0)