Skip to content

Commit fc3f5ca

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
security_monitoring - Document rules bulk export (#3401)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 02d3234 commit fc3f5ca

File tree

11 files changed

+971
-0
lines changed

11 files changed

+971
-0
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49985,6 +49985,55 @@ components:
4998549985
- TWO_DAYS
4998649986
- ONE_WEEK
4998749987
- TWO_WEEKS
49988+
SecurityMonitoringRuleBulkExportAttributes:
49989+
description: Attributes for bulk exporting security monitoring rules.
49990+
properties:
49991+
ruleIds:
49992+
description: 'List of rule IDs to export. Each rule will be included in
49993+
the resulting ZIP file
49994+
49995+
as a separate JSON file.'
49996+
example:
49997+
- def-000-u7q
49998+
- def-000-7dd
49999+
items:
50000+
type: string
50001+
minItems: 1
50002+
type: array
50003+
required:
50004+
- ruleIds
50005+
type: object
50006+
SecurityMonitoringRuleBulkExportData:
50007+
description: Data for bulk exporting security monitoring rules.
50008+
properties:
50009+
attributes:
50010+
$ref: '#/components/schemas/SecurityMonitoringRuleBulkExportAttributes'
50011+
id:
50012+
description: Request ID.
50013+
example: bulk_export
50014+
type: string
50015+
type:
50016+
$ref: '#/components/schemas/SecurityMonitoringRuleBulkExportDataType'
50017+
required:
50018+
- attributes
50019+
- type
50020+
type: object
50021+
SecurityMonitoringRuleBulkExportDataType:
50022+
description: The type of the resource.
50023+
enum:
50024+
- security_monitoring_rules_bulk_export
50025+
example: security_monitoring_rules_bulk_export
50026+
type: string
50027+
x-enum-varnames:
50028+
- SECURITY_MONITORING_RULES_BULK_EXPORT
50029+
SecurityMonitoringRuleBulkExportPayload:
50030+
description: Payload for bulk exporting security monitoring rules.
50031+
properties:
50032+
data:
50033+
$ref: '#/components/schemas/SecurityMonitoringRuleBulkExportData'
50034+
required:
50035+
- data
50036+
type: object
4998850037
SecurityMonitoringRuleCase:
4998950038
description: Case when signal is generated.
4999050039
properties:
@@ -87257,6 +87306,51 @@ paths:
8725787306
operator: OR
8725887307
permissions:
8725987308
- security_monitoring_rules_write
87309+
/api/v2/security_monitoring/rules/bulk_export:
87310+
post:
87311+
description: 'Export a list of security monitoring rules as a ZIP file containing
87312+
JSON rule definitions.
87313+
87314+
The endpoint accepts a list of rule IDs and returns a ZIP archive where each
87315+
rule is
87316+
87317+
saved as a separate JSON file named after the rule.'
87318+
operationId: BulkExportSecurityMonitoringRules
87319+
requestBody:
87320+
content:
87321+
application/json:
87322+
schema:
87323+
$ref: '#/components/schemas/SecurityMonitoringRuleBulkExportPayload'
87324+
required: true
87325+
responses:
87326+
'200':
87327+
content:
87328+
application/zip:
87329+
schema:
87330+
format: binary
87331+
type: string
87332+
description: OK
87333+
'400':
87334+
$ref: '#/components/responses/BadRequestResponse'
87335+
'403':
87336+
$ref: '#/components/responses/NotAuthorizedResponse'
87337+
'404':
87338+
$ref: '#/components/responses/NotFoundResponse'
87339+
'429':
87340+
$ref: '#/components/responses/TooManyRequestsResponse'
87341+
security:
87342+
- apiKeyAuth: []
87343+
appKeyAuth: []
87344+
- AuthZ:
87345+
- security_monitoring_rules_read
87346+
summary: Bulk export security monitoring rules
87347+
tags:
87348+
- Security Monitoring
87349+
x-codegen-request-body-name: body
87350+
x-permission:
87351+
operator: OR
87352+
permissions:
87353+
- security_monitoring_rules_read
8726087354
/api/v2/security_monitoring/rules/convert:
8726187355
post:
8726287356
description: 'Convert a rule that doesn''t (yet) exist from JSON to Terraform
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Bulk export security monitoring rules returns "OK" response
2+
3+
import com.datadog.api.client.ApiClient;
4+
import com.datadog.api.client.ApiException;
5+
import com.datadog.api.client.v2.api.SecurityMonitoringApi;
6+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkExportAttributes;
7+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkExportData;
8+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkExportDataType;
9+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkExportPayload;
10+
import java.io.File;
11+
import java.util.Collections;
12+
13+
public class Example {
14+
public static void main(String[] args) {
15+
ApiClient defaultClient = ApiClient.getDefaultApiClient();
16+
SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient);
17+
18+
// there is a valid "security_rule" in the system
19+
String SECURITY_RULE_ID = System.getenv("SECURITY_RULE_ID");
20+
21+
SecurityMonitoringRuleBulkExportPayload body =
22+
new SecurityMonitoringRuleBulkExportPayload()
23+
.data(
24+
new SecurityMonitoringRuleBulkExportData()
25+
.attributes(
26+
new SecurityMonitoringRuleBulkExportAttributes()
27+
.ruleIds(Collections.singletonList(SECURITY_RULE_ID)))
28+
.type(
29+
SecurityMonitoringRuleBulkExportDataType
30+
.SECURITY_MONITORING_RULES_BULK_EXPORT));
31+
32+
try {
33+
File result = apiInstance.bulkExportSecurityMonitoringRules(body);
34+
System.out.println(result);
35+
} catch (ApiException e) {
36+
System.err.println(
37+
"Exception when calling SecurityMonitoringApi#bulkExportSecurityMonitoringRules");
38+
System.err.println("Status code: " + e.getCode());
39+
System.err.println("Reason: " + e.getResponseBody());
40+
System.err.println("Response headers: " + e.getResponseHeaders());
41+
e.printStackTrace();
42+
}
43+
}
44+
}

src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetsResponse;
6464
import com.datadog.api.client.v2.model.SecurityMonitoringListRulesResponse;
6565
import com.datadog.api.client.v2.model.SecurityMonitoringPaginatedSuppressionsResponse;
66+
import com.datadog.api.client.v2.model.SecurityMonitoringRuleBulkExportPayload;
6667
import com.datadog.api.client.v2.model.SecurityMonitoringRuleConvertPayload;
6768
import com.datadog.api.client.v2.model.SecurityMonitoringRuleConvertResponse;
6869
import com.datadog.api.client.v2.model.SecurityMonitoringRuleCreatePayload;
@@ -98,6 +99,7 @@
9899
import com.datadog.api.client.v2.model.VulnerabilityType;
99100
import jakarta.ws.rs.client.Invocation;
100101
import jakarta.ws.rs.core.GenericType;
102+
import java.io.File;
101103
import java.time.OffsetDateTime;
102104
import java.util.ArrayList;
103105
import java.util.HashMap;
@@ -445,6 +447,145 @@ public CompletableFuture<ApiResponse<FindingCaseResponse>> attachJiraIssueWithHt
445447
new GenericType<FindingCaseResponse>() {});
446448
}
447449

450+
/**
451+
* Bulk export security monitoring rules.
452+
*
453+
* <p>See {@link #bulkExportSecurityMonitoringRulesWithHttpInfo}.
454+
*
455+
* @param body (required)
456+
* @return File
457+
* @throws ApiException if fails to make API call
458+
*/
459+
public File bulkExportSecurityMonitoringRules(SecurityMonitoringRuleBulkExportPayload body)
460+
throws ApiException {
461+
return bulkExportSecurityMonitoringRulesWithHttpInfo(body).getData();
462+
}
463+
464+
/**
465+
* Bulk export security monitoring rules.
466+
*
467+
* <p>See {@link #bulkExportSecurityMonitoringRulesWithHttpInfoAsync}.
468+
*
469+
* @param body (required)
470+
* @return CompletableFuture&lt;File&gt;
471+
*/
472+
public CompletableFuture<File> bulkExportSecurityMonitoringRulesAsync(
473+
SecurityMonitoringRuleBulkExportPayload body) {
474+
return bulkExportSecurityMonitoringRulesWithHttpInfoAsync(body)
475+
.thenApply(
476+
response -> {
477+
return response.getData();
478+
});
479+
}
480+
481+
/**
482+
* Export a list of security monitoring rules as a ZIP file containing JSON rule definitions. The
483+
* endpoint accepts a list of rule IDs and returns a ZIP archive where each rule is saved as a
484+
* separate JSON file named after the rule.
485+
*
486+
* @param body (required)
487+
* @return ApiResponse&lt;File&gt;
488+
* @throws ApiException if fails to make API call
489+
* @http.response.details
490+
* <table border="1">
491+
* <caption>Response details</caption>
492+
* <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
493+
* <tr><td> 200 </td><td> OK </td><td> - </td></tr>
494+
* <tr><td> 400 </td><td> Bad Request </td><td> - </td></tr>
495+
* <tr><td> 403 </td><td> Not Authorized </td><td> - </td></tr>
496+
* <tr><td> 404 </td><td> Not Found </td><td> - </td></tr>
497+
* <tr><td> 429 </td><td> Too many requests </td><td> - </td></tr>
498+
* </table>
499+
*/
500+
public ApiResponse<File> bulkExportSecurityMonitoringRulesWithHttpInfo(
501+
SecurityMonitoringRuleBulkExportPayload body) throws ApiException {
502+
Object localVarPostBody = body;
503+
504+
// verify the required parameter 'body' is set
505+
if (body == null) {
506+
throw new ApiException(
507+
400,
508+
"Missing the required parameter 'body' when calling bulkExportSecurityMonitoringRules");
509+
}
510+
// create path and map variables
511+
String localVarPath = "/api/v2/security_monitoring/rules/bulk_export";
512+
513+
Map<String, String> localVarHeaderParams = new HashMap<String, String>();
514+
515+
Invocation.Builder builder =
516+
apiClient.createBuilder(
517+
"v2.SecurityMonitoringApi.bulkExportSecurityMonitoringRules",
518+
localVarPath,
519+
new ArrayList<Pair>(),
520+
localVarHeaderParams,
521+
new HashMap<String, String>(),
522+
new String[] {"application/zip", "application/json"},
523+
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
524+
return apiClient.invokeAPI(
525+
"POST",
526+
builder,
527+
localVarHeaderParams,
528+
new String[] {"application/json"},
529+
localVarPostBody,
530+
new HashMap<String, Object>(),
531+
false,
532+
new GenericType<File>() {});
533+
}
534+
535+
/**
536+
* Bulk export security monitoring rules.
537+
*
538+
* <p>See {@link #bulkExportSecurityMonitoringRulesWithHttpInfo}.
539+
*
540+
* @param body (required)
541+
* @return CompletableFuture&lt;ApiResponse&lt;File&gt;&gt;
542+
*/
543+
public CompletableFuture<ApiResponse<File>> bulkExportSecurityMonitoringRulesWithHttpInfoAsync(
544+
SecurityMonitoringRuleBulkExportPayload body) {
545+
Object localVarPostBody = body;
546+
547+
// verify the required parameter 'body' is set
548+
if (body == null) {
549+
CompletableFuture<ApiResponse<File>> result = new CompletableFuture<>();
550+
result.completeExceptionally(
551+
new ApiException(
552+
400,
553+
"Missing the required parameter 'body' when calling"
554+
+ " bulkExportSecurityMonitoringRules"));
555+
return result;
556+
}
557+
// create path and map variables
558+
String localVarPath = "/api/v2/security_monitoring/rules/bulk_export";
559+
560+
Map<String, String> localVarHeaderParams = new HashMap<String, String>();
561+
562+
Invocation.Builder builder;
563+
try {
564+
builder =
565+
apiClient.createBuilder(
566+
"v2.SecurityMonitoringApi.bulkExportSecurityMonitoringRules",
567+
localVarPath,
568+
new ArrayList<Pair>(),
569+
localVarHeaderParams,
570+
new HashMap<String, String>(),
571+
new String[] {"application/zip", "application/json"},
572+
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
573+
} catch (ApiException ex) {
574+
CompletableFuture<ApiResponse<File>> result = new CompletableFuture<>();
575+
result.completeExceptionally(ex);
576+
return result;
577+
}
578+
return apiClient.invokeAPIAsync(
579+
"POST",
580+
builder,
581+
localVarHeaderParams,
582+
new String[] {"application/json"},
583+
localVarPostBody,
584+
new HashMap<String, Object>(),
585+
false,
586+
new GenericType<File>() {});
587+
}
588+
448589
/**
449590
* Cancel a threat hunting job.
450591
*

0 commit comments

Comments
 (0)