Skip to content

Commit aa3736d

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Document bulk delete security monitoring rules endpoint (#4004)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 85d5f27 commit aa3736d

11 files changed

Lines changed: 810 additions & 0 deletions

.generator/schemas/v2/openapi.yaml

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64151,6 +64151,63 @@ components:
6415164151
- TWO_DAYS
6415264152
- ONE_WEEK
6415364153
- TWO_WEEKS
64154+
SecurityMonitoringRuleBulkDeleteAttributes:
64155+
description: Attributes for bulk deleting security monitoring rules.
64156+
properties:
64157+
ruleIds:
64158+
description: List of rule IDs to delete.
64159+
example:
64160+
- abc-000-u7q
64161+
- abc-000-7dd
64162+
items:
64163+
description: A rule ID to delete.
64164+
type: string
64165+
minItems: 1
64166+
type: array
64167+
required:
64168+
- ruleIds
64169+
type: object
64170+
SecurityMonitoringRuleBulkDeleteData:
64171+
description: Data for bulk deleting security monitoring rules.
64172+
properties:
64173+
attributes:
64174+
$ref: "#/components/schemas/SecurityMonitoringRuleBulkDeleteAttributes"
64175+
type:
64176+
$ref: "#/components/schemas/SecurityMonitoringRuleBulkDeleteRequestDataType"
64177+
required:
64178+
- attributes
64179+
- type
64180+
type: object
64181+
SecurityMonitoringRuleBulkDeletePayload:
64182+
description: Payload for bulk deleting security monitoring rules.
64183+
properties:
64184+
data:
64185+
$ref: "#/components/schemas/SecurityMonitoringRuleBulkDeleteData"
64186+
required:
64187+
- data
64188+
type: object
64189+
SecurityMonitoringRuleBulkDeleteRequestDataType:
64190+
description: The resource type for a bulk delete request.
64191+
enum:
64192+
- bulk_delete_rules
64193+
example: bulk_delete_rules
64194+
type: string
64195+
x-enum-varnames:
64196+
- BULK_DELETE_RULES
64197+
SecurityMonitoringRuleBulkDeleteResponse:
64198+
description: Response for bulk deleting security monitoring rules.
64199+
properties:
64200+
deletedRules:
64201+
description: List of successfully deleted rule IDs.
64202+
items:
64203+
type: string
64204+
type: array
64205+
failedRules:
64206+
description: List of rule IDs that could not be deleted.
64207+
items:
64208+
type: string
64209+
type: array
64210+
type: object
6415464211
SecurityMonitoringRuleBulkExportAttributes:
6415564212
description: Attributes for bulk exporting security monitoring rules.
6415664213
properties:
@@ -123130,6 +123187,53 @@ paths:
123130123187
operator: OR
123131123188
permissions:
123132123189
- security_monitoring_rules_write
123190+
/api/v2/security_monitoring/rules/bulk_delete:
123191+
delete:
123192+
description: |-
123193+
Delete multiple security monitoring rules in a single request. Default rules cannot be deleted.
123194+
operationId: BulkDeleteSecurityMonitoringRules
123195+
requestBody:
123196+
content:
123197+
application/json:
123198+
examples:
123199+
default:
123200+
value:
123201+
data:
123202+
attributes:
123203+
ruleIds:
123204+
- abc-000-u7q
123205+
- abc-000-7dd
123206+
type: bulk_delete_rules
123207+
schema:
123208+
$ref: "#/components/schemas/SecurityMonitoringRuleBulkDeletePayload"
123209+
required: true
123210+
responses:
123211+
"200":
123212+
content:
123213+
"application/json":
123214+
schema:
123215+
$ref: "#/components/schemas/SecurityMonitoringRuleBulkDeleteResponse"
123216+
description: OK
123217+
"400":
123218+
$ref: "#/components/responses/BadRequestResponse"
123219+
"403":
123220+
$ref: "#/components/responses/NotAuthorizedResponse"
123221+
"404":
123222+
$ref: "#/components/responses/NotFoundResponse"
123223+
"429":
123224+
$ref: "#/components/responses/TooManyRequestsResponse"
123225+
security:
123226+
- apiKeyAuth: []
123227+
appKeyAuth: []
123228+
- AuthZ:
123229+
- security_monitoring_rules_write
123230+
summary: Bulk delete security monitoring rules
123231+
tags: ["Security Monitoring"]
123232+
x-codegen-request-body-name: body
123233+
"x-permission":
123234+
operator: OR
123235+
permissions:
123236+
- security_monitoring_rules_write
123133123237
/api/v2/security_monitoring/rules/bulk_export:
123134123238
post:
123135123239
description: |-

api/datadogV2/api_security_monitoring.go

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,86 @@ func (a *SecurityMonitoringApi) AttachJiraIssue(ctx _context.Context, body Attac
271271
return localVarReturnValue, localVarHTTPResponse, nil
272272
}
273273

274+
// BulkDeleteSecurityMonitoringRules Bulk delete security monitoring rules.
275+
// Delete multiple security monitoring rules in a single request. Default rules cannot be deleted.
276+
func (a *SecurityMonitoringApi) BulkDeleteSecurityMonitoringRules(ctx _context.Context, body SecurityMonitoringRuleBulkDeletePayload) (SecurityMonitoringRuleBulkDeleteResponse, *_nethttp.Response, error) {
277+
var (
278+
localVarHTTPMethod = _nethttp.MethodDelete
279+
localVarPostBody interface{}
280+
localVarReturnValue SecurityMonitoringRuleBulkDeleteResponse
281+
)
282+
283+
localBasePath, err := a.Client.Cfg.ServerURLWithContext(ctx, "v2.SecurityMonitoringApi.BulkDeleteSecurityMonitoringRules")
284+
if err != nil {
285+
return localVarReturnValue, nil, datadog.GenericOpenAPIError{ErrorMessage: err.Error()}
286+
}
287+
288+
localVarPath := localBasePath + "/api/v2/security_monitoring/rules/bulk_delete"
289+
290+
localVarHeaderParams := make(map[string]string)
291+
localVarQueryParams := _neturl.Values{}
292+
localVarFormParams := _neturl.Values{}
293+
localVarHeaderParams["Content-Type"] = "application/json"
294+
localVarHeaderParams["Accept"] = "application/json"
295+
296+
// body params
297+
localVarPostBody = &body
298+
if a.Client.Cfg.DelegatedTokenConfig != nil {
299+
err = datadog.UseDelegatedTokenAuth(ctx, &localVarHeaderParams, a.Client.Cfg.DelegatedTokenConfig)
300+
if err != nil {
301+
return localVarReturnValue, nil, err
302+
}
303+
} else {
304+
datadog.SetAuthKeys(
305+
ctx,
306+
&localVarHeaderParams,
307+
[2]string{"apiKeyAuth", "DD-API-KEY"},
308+
[2]string{"appKeyAuth", "DD-APPLICATION-KEY"},
309+
)
310+
}
311+
req, err := a.Client.PrepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, nil)
312+
if err != nil {
313+
return localVarReturnValue, nil, err
314+
}
315+
316+
localVarHTTPResponse, err := a.Client.CallAPI(req)
317+
if err != nil || localVarHTTPResponse == nil {
318+
return localVarReturnValue, localVarHTTPResponse, err
319+
}
320+
321+
localVarBody, err := datadog.ReadBody(localVarHTTPResponse)
322+
if err != nil {
323+
return localVarReturnValue, localVarHTTPResponse, err
324+
}
325+
326+
if localVarHTTPResponse.StatusCode >= 300 {
327+
newErr := datadog.GenericOpenAPIError{
328+
ErrorBody: localVarBody,
329+
ErrorMessage: localVarHTTPResponse.Status,
330+
}
331+
if localVarHTTPResponse.StatusCode == 400 || localVarHTTPResponse.StatusCode == 403 || localVarHTTPResponse.StatusCode == 404 || localVarHTTPResponse.StatusCode == 429 {
332+
var v APIErrorResponse
333+
err = a.Client.Decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
334+
if err != nil {
335+
return localVarReturnValue, localVarHTTPResponse, newErr
336+
}
337+
newErr.ErrorModel = v
338+
}
339+
return localVarReturnValue, localVarHTTPResponse, newErr
340+
}
341+
342+
err = a.Client.Decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
343+
if err != nil {
344+
newErr := datadog.GenericOpenAPIError{
345+
ErrorBody: localVarBody,
346+
ErrorMessage: err.Error(),
347+
}
348+
return localVarReturnValue, localVarHTTPResponse, newErr
349+
}
350+
351+
return localVarReturnValue, localVarHTTPResponse, nil
352+
}
353+
274354
// BulkEditSecurityMonitoringSignals Bulk update security signals.
275355
// Update the triage state or assignee of multiple security signals at once.
276356
// The maximum number of signals that can be updated in a single request is 199.

api/datadogV2/doc.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,7 @@
741741
// - [SecurityMonitoringApi.ActivateContentPack]
742742
// - [SecurityMonitoringApi.AttachCase]
743743
// - [SecurityMonitoringApi.AttachJiraIssue]
744+
// - [SecurityMonitoringApi.BulkDeleteSecurityMonitoringRules]
744745
// - [SecurityMonitoringApi.BulkEditSecurityMonitoringSignals]
745746
// - [SecurityMonitoringApi.BulkEditSecurityMonitoringSignalsAssignee]
746747
// - [SecurityMonitoringApi.BulkEditSecurityMonitoringSignalsState]
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
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+
5+
package datadogV2
6+
7+
import (
8+
"fmt"
9+
10+
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
11+
)
12+
13+
// SecurityMonitoringRuleBulkDeleteAttributes Attributes for bulk deleting security monitoring rules.
14+
type SecurityMonitoringRuleBulkDeleteAttributes struct {
15+
// List of rule IDs to delete.
16+
RuleIds []string `json:"ruleIds"`
17+
// UnparsedObject contains the raw value of the object if there was an error when deserializing into the struct
18+
UnparsedObject map[string]interface{} `json:"-"`
19+
AdditionalProperties map[string]interface{} `json:"-"`
20+
}
21+
22+
// NewSecurityMonitoringRuleBulkDeleteAttributes instantiates a new SecurityMonitoringRuleBulkDeleteAttributes object.
23+
// This constructor will assign default values to properties that have it defined,
24+
// and makes sure properties required by API are set, but the set of arguments
25+
// will change when the set of required properties is changed.
26+
func NewSecurityMonitoringRuleBulkDeleteAttributes(ruleIds []string) *SecurityMonitoringRuleBulkDeleteAttributes {
27+
this := SecurityMonitoringRuleBulkDeleteAttributes{}
28+
this.RuleIds = ruleIds
29+
return &this
30+
}
31+
32+
// NewSecurityMonitoringRuleBulkDeleteAttributesWithDefaults instantiates a new SecurityMonitoringRuleBulkDeleteAttributes object.
33+
// This constructor will only assign default values to properties that have it defined,
34+
// but it doesn't guarantee that properties required by API are set.
35+
func NewSecurityMonitoringRuleBulkDeleteAttributesWithDefaults() *SecurityMonitoringRuleBulkDeleteAttributes {
36+
this := SecurityMonitoringRuleBulkDeleteAttributes{}
37+
return &this
38+
}
39+
40+
// GetRuleIds returns the RuleIds field value.
41+
func (o *SecurityMonitoringRuleBulkDeleteAttributes) GetRuleIds() []string {
42+
if o == nil {
43+
var ret []string
44+
return ret
45+
}
46+
return o.RuleIds
47+
}
48+
49+
// GetRuleIdsOk returns a tuple with the RuleIds field value
50+
// and a boolean to check if the value has been set.
51+
func (o *SecurityMonitoringRuleBulkDeleteAttributes) GetRuleIdsOk() (*[]string, bool) {
52+
if o == nil {
53+
return nil, false
54+
}
55+
return &o.RuleIds, true
56+
}
57+
58+
// SetRuleIds sets field value.
59+
func (o *SecurityMonitoringRuleBulkDeleteAttributes) SetRuleIds(v []string) {
60+
o.RuleIds = v
61+
}
62+
63+
// MarshalJSON serializes the struct using spec logic.
64+
func (o SecurityMonitoringRuleBulkDeleteAttributes) MarshalJSON() ([]byte, error) {
65+
toSerialize := map[string]interface{}{}
66+
if o.UnparsedObject != nil {
67+
return datadog.Marshal(o.UnparsedObject)
68+
}
69+
toSerialize["ruleIds"] = o.RuleIds
70+
71+
for key, value := range o.AdditionalProperties {
72+
toSerialize[key] = value
73+
}
74+
return datadog.Marshal(toSerialize)
75+
}
76+
77+
// UnmarshalJSON deserializes the given payload.
78+
func (o *SecurityMonitoringRuleBulkDeleteAttributes) UnmarshalJSON(bytes []byte) (err error) {
79+
all := struct {
80+
RuleIds *[]string `json:"ruleIds"`
81+
}{}
82+
if err = datadog.Unmarshal(bytes, &all); err != nil {
83+
return datadog.Unmarshal(bytes, &o.UnparsedObject)
84+
}
85+
if all.RuleIds == nil {
86+
return fmt.Errorf("required field ruleIds missing")
87+
}
88+
additionalProperties := make(map[string]interface{})
89+
if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil {
90+
datadog.DeleteKeys(additionalProperties, &[]string{"ruleIds"})
91+
} else {
92+
return err
93+
}
94+
o.RuleIds = *all.RuleIds
95+
96+
if len(additionalProperties) > 0 {
97+
o.AdditionalProperties = additionalProperties
98+
}
99+
100+
return nil
101+
}

0 commit comments

Comments
 (0)