From 6f59b81a9535ce0abdbab179f4d0127c80328675 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Wed, 14 Jan 2026 19:31:40 +0000 Subject: [PATCH] Regenerate client from commit 7e45cf6 of spec repo --- .generator/schemas/v2/openapi.yaml | 418 ++++++++ ...CreateSecurityMonitoringCriticalAsset.java | 46 + ...DeleteSecurityMonitoringCriticalAsset.java | 26 + .../GetCriticalAssetsAffectingRule.java | 29 + .../GetSecurityMonitoringCriticalAsset.java | 29 + .../ListSecurityMonitoringCriticalAssets.java | 26 + ...UpdateSecurityMonitoringCriticalAsset.java | 51 + .../client/v2/api/SecurityMonitoringApi.java | 940 +++++++++++++++++- .../SecurityMonitoringCriticalAsset.java | 200 ++++ ...rityMonitoringCriticalAssetAttributes.java | 473 +++++++++ ...nitoringCriticalAssetCreateAttributes.java | 280 ++++++ ...rityMonitoringCriticalAssetCreateData.java | 187 ++++ ...yMonitoringCriticalAssetCreateRequest.java | 151 +++ ...curityMonitoringCriticalAssetResponse.java | 139 +++ ...curityMonitoringCriticalAssetSeverity.java | 79 ++ .../SecurityMonitoringCriticalAssetType.java | 59 ++ ...nitoringCriticalAssetUpdateAttributes.java | 296 ++++++ ...rityMonitoringCriticalAssetUpdateData.java | 187 ++++ ...yMonitoringCriticalAssetUpdateRequest.java | 151 +++ ...urityMonitoringCriticalAssetsResponse.java | 153 +++ ..._critical_asset_returns_OK_response.freeze | 1 + ..._a_critical_asset_returns_OK_response.json | 53 + ...al_asset_returns_Not_Found_response.freeze | 1 + ...ical_asset_returns_Not_Found_response.json | 28 + ..._critical_asset_returns_OK_response.freeze | 1 + ..._a_critical_asset_returns_OK_response.json | 79 ++ ...al_asset_returns_Not_Found_response.freeze | 1 + ...ical_asset_returns_Not_Found_response.json | 28 + ..._critical_asset_returns_OK_response.freeze | 1 + ..._a_critical_asset_returns_OK_response.json | 79 ++ ...critical_assets_returns_OK_response.freeze | 1 + ...l_critical_assets_returns_OK_response.json | 28 + ...fic_rule_returns_Not_Found_response.freeze | 1 + ...cific_rule_returns_Not_Found_response.json | 28 + ...a_specific_rule_returns_OK_response.freeze | 1 + ...g_a_specific_rule_returns_OK_response.json | 79 ++ ..._asset_returns_Bad_Request_response.freeze | 1 + ...al_asset_returns_Bad_Request_response.json | 32 + ...al_asset_returns_Not_Found_response.freeze | 1 + ...ical_asset_returns_Not_Found_response.json | 32 + ..._critical_asset_returns_OK_response.freeze | 1 + ..._a_critical_asset_returns_OK_response.json | 83 ++ .../com/datadog/api/client/v2/api/given.json | 12 + .../client/v2/api/security_monitoring.feature | 113 +++ .../com/datadog/api/client/v2/api/undo.json | 43 + 45 files changed, 4645 insertions(+), 3 deletions(-) create mode 100644 examples/v2/security-monitoring/CreateSecurityMonitoringCriticalAsset.java create mode 100644 examples/v2/security-monitoring/DeleteSecurityMonitoringCriticalAsset.java create mode 100644 examples/v2/security-monitoring/GetCriticalAssetsAffectingRule.java create mode 100644 examples/v2/security-monitoring/GetSecurityMonitoringCriticalAsset.java create mode 100644 examples/v2/security-monitoring/ListSecurityMonitoringCriticalAssets.java create mode 100644 examples/v2/security-monitoring/UpdateSecurityMonitoringCriticalAsset.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAsset.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateRequest.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetResponse.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetSeverity.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetType.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateAttributes.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateRequest.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetsResponse.java create mode 100644 src/test/resources/cassettes/features/v2/Create_a_critical_asset_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Create_a_critical_asset_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Get_all_critical_assets_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Get_all_critical_assets_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Bad_Request_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Bad_Request_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_OK_response.json diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 6fb646a7c0d..bd067655020 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -1023,6 +1023,13 @@ components: required: true schema: type: string + SecurityMonitoringCriticalAssetID: + description: The ID of the critical asset. + in: path + name: critical_asset_id + required: true + schema: + type: string SecurityMonitoringRuleID: description: The ID of the rule. in: path @@ -48912,6 +48919,237 @@ components: x-enum-varnames: - DONE - TIMEOUT + SecurityMonitoringCriticalAsset: + description: The critical asset's properties. + properties: + attributes: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetAttributes' + id: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetID' + type: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetType' + type: object + SecurityMonitoringCriticalAssetAttributes: + description: The attributes of the critical asset. + properties: + creation_author_id: + description: ID of user who created the critical asset. + example: 367742 + format: int64 + type: integer + creation_date: + description: A Unix millisecond timestamp given the creation date of the + critical asset. + format: int64 + type: integer + creator: + $ref: '#/components/schemas/SecurityMonitoringUser' + enabled: + description: Whether the critical asset is enabled. + example: true + type: boolean + query: + description: The query for the critical asset. It uses the same syntax as + the queries to search signals in the Signals Explorer. + example: security:monitoring + type: string + rule_query: + description: The rule query of the critical asset, with the same syntax + as the search bar for detection rules. This determines which rules this + critical asset will apply to. + example: type:log_detection source:cloudtrail + type: string + severity: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetSeverity' + tags: + description: List of tags associated with the critical asset. + example: + - team:database + - source:cloudtrail + items: + type: string + type: array + update_author_id: + description: ID of user who updated the critical asset. + example: 367743 + format: int64 + type: integer + update_date: + description: A Unix millisecond timestamp given the update date of the critical + asset. + format: int64 + type: integer + updater: + $ref: '#/components/schemas/SecurityMonitoringUser' + version: + description: The version of the critical asset; it starts at 1, and is incremented + at each update. + example: 2 + format: int32 + maximum: 2147483647 + type: integer + type: object + SecurityMonitoringCriticalAssetCreateAttributes: + description: Object containing the attributes of the critical asset to be created. + properties: + enabled: + default: true + description: Whether the critical asset is enabled. Defaults to `true` if + not specified. + example: true + type: boolean + query: + description: The query for the critical asset. It uses the same syntax as + the queries to search signals in the Signals Explorer. + example: security:monitoring + type: string + rule_query: + description: The rule query of the critical asset, with the same syntax + as the search bar for detection rules. This determines which rules this + critical asset will apply to. + example: type:(log_detection OR signal_correlation OR workload_security + OR application_security) source:cloudtrail + type: string + severity: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetSeverity' + tags: + description: List of tags associated with the critical asset. + example: + - team:database + - source:cloudtrail + items: + type: string + type: array + required: + - query + - severity + - rule_query + type: object + SecurityMonitoringCriticalAssetCreateData: + description: Object for a single critical asset. + properties: + attributes: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetCreateAttributes' + type: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetType' + required: + - type + - attributes + type: object + SecurityMonitoringCriticalAssetCreateRequest: + description: Request object that includes the critical asset that you would + like to create. + properties: + data: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetCreateData' + required: + - data + type: object + SecurityMonitoringCriticalAssetID: + description: The ID of the critical asset. + example: 4e2435a5-6670-4b8f-baff-46083cd1c250 + type: string + SecurityMonitoringCriticalAssetResponse: + description: Response object containing a single critical asset. + properties: + data: + $ref: '#/components/schemas/SecurityMonitoringCriticalAsset' + type: object + SecurityMonitoringCriticalAssetSeverity: + description: Severity associated with this critical asset. Either an explicit + severity can be set, or the severity can be increased or decreased. + enum: + - info + - low + - medium + - high + - critical + - increase + - decrease + example: increase + type: string + x-enum-varnames: + - INFO + - LOW + - MEDIUM + - HIGH + - CRITICAL + - INCREASE + - DECREASE + SecurityMonitoringCriticalAssetType: + default: critical_assets + description: The type of the resource. The value should always be `critical_assets`. + enum: + - critical_assets + example: critical_assets + type: string + x-enum-varnames: + - CRITICAL_ASSETS + SecurityMonitoringCriticalAssetUpdateAttributes: + description: The critical asset properties to be updated. + properties: + enabled: + description: Whether the critical asset is enabled. + example: true + type: boolean + query: + description: The query for the critical asset. It uses the same syntax as + the queries to search signals in the Signals Explorer. + example: security:monitoring + type: string + rule_query: + description: The rule query of the critical asset, with the same syntax + as the search bar for detection rules. This determines which rules this + critical asset will apply to. + example: type:log_detection source:cloudtrail + type: string + severity: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetSeverity' + tags: + description: List of tags associated with the critical asset. + example: + - technique:T1110-brute-force + - source:cloudtrail + items: + type: string + type: array + version: + description: The version of the critical asset being updated. Used for optimistic + locking to prevent concurrent modifications. + example: 1 + format: int32 + maximum: 2147483647 + type: integer + type: object + SecurityMonitoringCriticalAssetUpdateData: + description: The new critical asset properties; partial updates are supported. + properties: + attributes: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetUpdateAttributes' + type: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetType' + required: + - type + - attributes + type: object + SecurityMonitoringCriticalAssetUpdateRequest: + description: Request object containing the fields to update on the critical + asset. + properties: + data: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetUpdateData' + required: + - data + type: object + SecurityMonitoringCriticalAssetsResponse: + description: Response object containing the available critical assets. + properties: + data: + description: A list of critical assets objects. + items: + $ref: '#/components/schemas/SecurityMonitoringCriticalAsset' + type: array + type: object SecurityMonitoringFilter: description: The rule's suppression filter. properties: @@ -60568,6 +60806,8 @@ components: & unsubscribing from apps in the marketplace, and enabling & disabling Remote Configuration for the entire organization. security_comments_read: Read comments of vulnerabilities. + security_monitoring_critical_assets_read: Read Critical Assets. + security_monitoring_critical_assets_write: Write Critical Assets. security_monitoring_filters_read: Read Security Filters. security_monitoring_filters_write: Create, edit, and delete Security Filters. security_monitoring_findings_read: View a list of findings that include @@ -84951,6 +85191,184 @@ paths: operator: OR permissions: - security_monitoring_cws_agent_rules_write + /api/v2/security_monitoring/configuration/critical_assets: + get: + description: Get the list of all critical assets. + operationId: ListSecurityMonitoringCriticalAssets + parameters: + - description: Query string. + in: query + name: query + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetsResponse' + description: OK + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_critical_assets_read + summary: Get all critical assets + tags: + - Security Monitoring + post: + description: Create a new critical asset. + operationId: CreateSecurityMonitoringCriticalAsset + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetCreateRequest' + description: The definition of the new critical asset. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetResponse' + description: OK + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '409': + $ref: '#/components/responses/ConflictResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_critical_assets_write + summary: Create a critical asset + tags: + - Security Monitoring + x-codegen-request-body-name: body + /api/v2/security_monitoring/configuration/critical_assets/rules/{rule_id}: + get: + description: Get the list of critical assets that affect a specific existing + rule by the rule's ID. + operationId: GetCriticalAssetsAffectingRule + parameters: + - $ref: '#/components/parameters/SecurityMonitoringRuleID' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetsResponse' + description: OK + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_critical_assets_read + summary: Get critical assets affecting a specific rule + tags: + - Security Monitoring + /api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}: + delete: + description: Delete a specific critical asset. + operationId: DeleteSecurityMonitoringCriticalAsset + parameters: + - $ref: '#/components/parameters/SecurityMonitoringCriticalAssetID' + responses: + '204': + description: OK + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_critical_assets_write + summary: Delete a critical asset + tags: + - Security Monitoring + get: + description: Get the details of a specific critical asset. + operationId: GetSecurityMonitoringCriticalAsset + parameters: + - $ref: '#/components/parameters/SecurityMonitoringCriticalAssetID' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetResponse' + description: OK + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_critical_assets_read + summary: Get a critical asset + tags: + - Security Monitoring + patch: + description: Update a specific critical asset. + operationId: UpdateSecurityMonitoringCriticalAsset + parameters: + - $ref: '#/components/parameters/SecurityMonitoringCriticalAssetID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetUpdateRequest' + description: New definition of the critical asset. Supports partial updates. + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringCriticalAssetResponse' + description: OK + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '409': + $ref: '#/components/responses/ConcurrentModificationResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_critical_assets_write + summary: Update a critical asset + tags: + - Security Monitoring /api/v2/security_monitoring/configuration/security_filters: get: description: Get the list of configured security filters with their definitions. diff --git a/examples/v2/security-monitoring/CreateSecurityMonitoringCriticalAsset.java b/examples/v2/security-monitoring/CreateSecurityMonitoringCriticalAsset.java new file mode 100644 index 00000000000..31b10d08636 --- /dev/null +++ b/examples/v2/security-monitoring/CreateSecurityMonitoringCriticalAsset.java @@ -0,0 +1,46 @@ +// Create a critical asset returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetCreateAttributes; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetCreateData; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetCreateRequest; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetResponse; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetSeverity; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetType; +import java.util.Arrays; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + SecurityMonitoringCriticalAssetCreateRequest body = + new SecurityMonitoringCriticalAssetCreateRequest() + .data( + new SecurityMonitoringCriticalAssetCreateData() + .type(SecurityMonitoringCriticalAssetType.CRITICAL_ASSETS) + .attributes( + new SecurityMonitoringCriticalAssetCreateAttributes() + .query("host:examplesecuritymonitoring") + .ruleQuery( + "type:(log_detection OR signal_correlation OR workload_security OR" + + " application_security) source:cloudtrail") + .severity(SecurityMonitoringCriticalAssetSeverity.DECREASE) + .tags(Arrays.asList("team:security", "env:test")))); + + try { + SecurityMonitoringCriticalAssetResponse result = + apiInstance.createSecurityMonitoringCriticalAsset(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling SecurityMonitoringApi#createSecurityMonitoringCriticalAsset"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/security-monitoring/DeleteSecurityMonitoringCriticalAsset.java b/examples/v2/security-monitoring/DeleteSecurityMonitoringCriticalAsset.java new file mode 100644 index 00000000000..cc57000dd98 --- /dev/null +++ b/examples/v2/security-monitoring/DeleteSecurityMonitoringCriticalAsset.java @@ -0,0 +1,26 @@ +// Delete a critical asset returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + // there is a valid "critical_asset" in the system + String CRITICAL_ASSET_DATA_ID = System.getenv("CRITICAL_ASSET_DATA_ID"); + + try { + apiInstance.deleteSecurityMonitoringCriticalAsset(CRITICAL_ASSET_DATA_ID); + } catch (ApiException e) { + System.err.println( + "Exception when calling SecurityMonitoringApi#deleteSecurityMonitoringCriticalAsset"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/security-monitoring/GetCriticalAssetsAffectingRule.java b/examples/v2/security-monitoring/GetCriticalAssetsAffectingRule.java new file mode 100644 index 00000000000..5e16a890e20 --- /dev/null +++ b/examples/v2/security-monitoring/GetCriticalAssetsAffectingRule.java @@ -0,0 +1,29 @@ +// Get critical assets affecting a specific rule returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetsResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + // there is a valid "security_rule" in the system + String SECURITY_RULE_ID = System.getenv("SECURITY_RULE_ID"); + + try { + SecurityMonitoringCriticalAssetsResponse result = + apiInstance.getCriticalAssetsAffectingRule(SECURITY_RULE_ID); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling SecurityMonitoringApi#getCriticalAssetsAffectingRule"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/security-monitoring/GetSecurityMonitoringCriticalAsset.java b/examples/v2/security-monitoring/GetSecurityMonitoringCriticalAsset.java new file mode 100644 index 00000000000..2c6cf10b98e --- /dev/null +++ b/examples/v2/security-monitoring/GetSecurityMonitoringCriticalAsset.java @@ -0,0 +1,29 @@ +// Get a critical asset returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + // there is a valid "critical_asset" in the system + String CRITICAL_ASSET_DATA_ID = System.getenv("CRITICAL_ASSET_DATA_ID"); + + try { + SecurityMonitoringCriticalAssetResponse result = + apiInstance.getSecurityMonitoringCriticalAsset(CRITICAL_ASSET_DATA_ID); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling SecurityMonitoringApi#getSecurityMonitoringCriticalAsset"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/security-monitoring/ListSecurityMonitoringCriticalAssets.java b/examples/v2/security-monitoring/ListSecurityMonitoringCriticalAssets.java new file mode 100644 index 00000000000..3e299db744d --- /dev/null +++ b/examples/v2/security-monitoring/ListSecurityMonitoringCriticalAssets.java @@ -0,0 +1,26 @@ +// Get all critical assets returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetsResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + try { + SecurityMonitoringCriticalAssetsResponse result = + apiInstance.listSecurityMonitoringCriticalAssets(); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling SecurityMonitoringApi#listSecurityMonitoringCriticalAssets"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/security-monitoring/UpdateSecurityMonitoringCriticalAsset.java b/examples/v2/security-monitoring/UpdateSecurityMonitoringCriticalAsset.java new file mode 100644 index 00000000000..fa7e7b53e30 --- /dev/null +++ b/examples/v2/security-monitoring/UpdateSecurityMonitoringCriticalAsset.java @@ -0,0 +1,51 @@ +// Update a critical asset returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SecurityMonitoringApi; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetResponse; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetSeverity; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetType; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetUpdateAttributes; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetUpdateData; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetUpdateRequest; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient); + + // there is a valid "critical_asset" in the system + String CRITICAL_ASSET_DATA_ID = System.getenv("CRITICAL_ASSET_DATA_ID"); + + SecurityMonitoringCriticalAssetUpdateRequest body = + new SecurityMonitoringCriticalAssetUpdateRequest() + .data( + new SecurityMonitoringCriticalAssetUpdateData() + .type(SecurityMonitoringCriticalAssetType.CRITICAL_ASSETS) + .attributes( + new SecurityMonitoringCriticalAssetUpdateAttributes() + .enabled(false) + .query("no:alert") + .ruleQuery( + "type:(log_detection OR signal_correlation OR workload_security OR" + + " application_security) ruleId:djg-ktx-ipq") + .severity(SecurityMonitoringCriticalAssetSeverity.DECREASE) + .tags(Collections.singletonList("env:production")) + .version(1))); + + try { + SecurityMonitoringCriticalAssetResponse result = + apiInstance.updateSecurityMonitoringCriticalAsset(CRITICAL_ASSET_DATA_ID, body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling SecurityMonitoringApi#updateSecurityMonitoringCriticalAsset"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java b/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java index 6d027879bb8..fdddd3540d7 100644 --- a/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/SecurityMonitoringApi.java @@ -57,6 +57,10 @@ import com.datadog.api.client.v2.model.SecurityFindingsSearchRequestDataAttributes; import com.datadog.api.client.v2.model.SecurityFindingsSearchRequestPage; import com.datadog.api.client.v2.model.SecurityFindingsSort; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetCreateRequest; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetResponse; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetUpdateRequest; +import com.datadog.api.client.v2.model.SecurityMonitoringCriticalAssetsResponse; import com.datadog.api.client.v2.model.SecurityMonitoringListRulesResponse; import com.datadog.api.client.v2.model.SecurityMonitoringRuleConvertPayload; import com.datadog.api.client.v2.model.SecurityMonitoringRuleConvertResponse; @@ -1605,6 +1609,149 @@ public ApiResponse createSecurityFilterWithHttpInfo( new GenericType() {}); } + /** + * Create a critical asset. + * + *

See {@link #createSecurityMonitoringCriticalAssetWithHttpInfo}. + * + * @param body The definition of the new critical asset. (required) + * @return SecurityMonitoringCriticalAssetResponse + * @throws ApiException if fails to make API call + */ + public SecurityMonitoringCriticalAssetResponse createSecurityMonitoringCriticalAsset( + SecurityMonitoringCriticalAssetCreateRequest body) throws ApiException { + return createSecurityMonitoringCriticalAssetWithHttpInfo(body).getData(); + } + + /** + * Create a critical asset. + * + *

See {@link #createSecurityMonitoringCriticalAssetWithHttpInfoAsync}. + * + * @param body The definition of the new critical asset. (required) + * @return CompletableFuture<SecurityMonitoringCriticalAssetResponse> + */ + public CompletableFuture + createSecurityMonitoringCriticalAssetAsync( + SecurityMonitoringCriticalAssetCreateRequest body) { + return createSecurityMonitoringCriticalAssetWithHttpInfoAsync(body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Create a new critical asset. + * + * @param body The definition of the new critical asset. (required) + * @return ApiResponse<SecurityMonitoringCriticalAssetResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
403 Not Authorized -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse + createSecurityMonitoringCriticalAssetWithHttpInfo( + SecurityMonitoringCriticalAssetCreateRequest body) throws ApiException { + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, + "Missing the required parameter 'body' when calling" + + " createSecurityMonitoringCriticalAsset"); + } + // create path and map variables + String localVarPath = "/api/v2/security_monitoring/configuration/critical_assets"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.createSecurityMonitoringCriticalAsset", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Create a critical asset. + * + *

See {@link #createSecurityMonitoringCriticalAssetWithHttpInfo}. + * + * @param body The definition of the new critical asset. (required) + * @return CompletableFuture<ApiResponse<SecurityMonitoringCriticalAssetResponse>> + */ + public CompletableFuture> + createSecurityMonitoringCriticalAssetWithHttpInfoAsync( + SecurityMonitoringCriticalAssetCreateRequest body) { + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'body' when calling" + + " createSecurityMonitoringCriticalAsset")); + return result; + } + // create path and map variables + String localVarPath = "/api/v2/security_monitoring/configuration/critical_assets"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.createSecurityMonitoringCriticalAsset", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + /** * Create a detection rule. * @@ -2470,6 +2617,149 @@ public CompletableFuture> deleteSecurityFilterWithHttpInfoAsyn null); } + /** + * Delete a critical asset. + * + *

See {@link #deleteSecurityMonitoringCriticalAssetWithHttpInfo}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @throws ApiException if fails to make API call + */ + public void deleteSecurityMonitoringCriticalAsset(String criticalAssetId) throws ApiException { + deleteSecurityMonitoringCriticalAssetWithHttpInfo(criticalAssetId); + } + + /** + * Delete a critical asset. + * + *

See {@link #deleteSecurityMonitoringCriticalAssetWithHttpInfoAsync}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @return CompletableFuture + */ + public CompletableFuture deleteSecurityMonitoringCriticalAssetAsync( + String criticalAssetId) { + return deleteSecurityMonitoringCriticalAssetWithHttpInfoAsync(criticalAssetId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Delete a specific critical asset. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @return ApiResponse<Void> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
204 OK -
403 Not Authorized -
404 Not Found -
429 Too many requests -
+ */ + public ApiResponse deleteSecurityMonitoringCriticalAssetWithHttpInfo(String criticalAssetId) + throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'criticalAssetId' is set + if (criticalAssetId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'criticalAssetId' when calling" + + " deleteSecurityMonitoringCriticalAsset"); + } + // create path and map variables + String localVarPath = + "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}" + .replaceAll( + "\\{" + "critical_asset_id" + "\\}", + apiClient.escapeString(criticalAssetId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.deleteSecurityMonitoringCriticalAsset", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + + /** + * Delete a critical asset. + * + *

See {@link #deleteSecurityMonitoringCriticalAssetWithHttpInfo}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @return CompletableFuture<ApiResponse<Void>> + */ + public CompletableFuture> + deleteSecurityMonitoringCriticalAssetWithHttpInfoAsync(String criticalAssetId) { + Object localVarPostBody = null; + + // verify the required parameter 'criticalAssetId' is set + if (criticalAssetId == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'criticalAssetId' when calling" + + " deleteSecurityMonitoringCriticalAsset")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}" + .replaceAll( + "\\{" + "critical_asset_id" + "\\}", + apiClient.escapeString(criticalAssetId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.deleteSecurityMonitoringCriticalAsset", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + /** * Delete an existing rule. * @@ -3814,6 +4104,148 @@ public SecurityMonitoringSignalTriageUpdateResponse editSecurityMonitoringSignal new GenericType() {}); } + /** + * Get critical assets affecting a specific rule. + * + *

See {@link #getCriticalAssetsAffectingRuleWithHttpInfo}. + * + * @param ruleId The ID of the rule. (required) + * @return SecurityMonitoringCriticalAssetsResponse + * @throws ApiException if fails to make API call + */ + public SecurityMonitoringCriticalAssetsResponse getCriticalAssetsAffectingRule(String ruleId) + throws ApiException { + return getCriticalAssetsAffectingRuleWithHttpInfo(ruleId).getData(); + } + + /** + * Get critical assets affecting a specific rule. + * + *

See {@link #getCriticalAssetsAffectingRuleWithHttpInfoAsync}. + * + * @param ruleId The ID of the rule. (required) + * @return CompletableFuture<SecurityMonitoringCriticalAssetsResponse> + */ + public CompletableFuture + getCriticalAssetsAffectingRuleAsync(String ruleId) { + return getCriticalAssetsAffectingRuleWithHttpInfoAsync(ruleId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Get the list of critical assets that affect a specific existing rule by the rule's ID. + * + * @param ruleId The ID of the rule. (required) + * @return ApiResponse<SecurityMonitoringCriticalAssetsResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
403 Not Authorized -
404 Not Found -
429 Too many requests -
+ */ + public ApiResponse + getCriticalAssetsAffectingRuleWithHttpInfo(String ruleId) throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'ruleId' is set + if (ruleId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'ruleId' when calling getCriticalAssetsAffectingRule"); + } + // create path and map variables + String localVarPath = + "/api/v2/security_monitoring/configuration/critical_assets/rules/{rule_id}" + .replaceAll("\\{" + "rule_id" + "\\}", apiClient.escapeString(ruleId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.getCriticalAssetsAffectingRule", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get critical assets affecting a specific rule. + * + *

See {@link #getCriticalAssetsAffectingRuleWithHttpInfo}. + * + * @param ruleId The ID of the rule. (required) + * @return CompletableFuture<ApiResponse<SecurityMonitoringCriticalAssetsResponse>> + */ + public CompletableFuture> + getCriticalAssetsAffectingRuleWithHttpInfoAsync(String ruleId) { + Object localVarPostBody = null; + + // verify the required parameter 'ruleId' is set + if (ruleId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'ruleId' when calling" + + " getCriticalAssetsAffectingRule")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/security_monitoring/configuration/critical_assets/rules/{rule_id}" + .replaceAll("\\{" + "rule_id" + "\\}", apiClient.escapeString(ruleId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.getCriticalAssetsAffectingRule", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + /** * Get a custom framework. * @@ -5137,7 +5569,153 @@ public CompletableFuture> getSecurityFilterW try { builder = apiClient.createBuilder( - "v2.SecurityMonitoringApi.getSecurityFilter", + "v2.SecurityMonitoringApi.getSecurityFilter", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get a critical asset. + * + *

See {@link #getSecurityMonitoringCriticalAssetWithHttpInfo}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @return SecurityMonitoringCriticalAssetResponse + * @throws ApiException if fails to make API call + */ + public SecurityMonitoringCriticalAssetResponse getSecurityMonitoringCriticalAsset( + String criticalAssetId) throws ApiException { + return getSecurityMonitoringCriticalAssetWithHttpInfo(criticalAssetId).getData(); + } + + /** + * Get a critical asset. + * + *

See {@link #getSecurityMonitoringCriticalAssetWithHttpInfoAsync}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @return CompletableFuture<SecurityMonitoringCriticalAssetResponse> + */ + public CompletableFuture + getSecurityMonitoringCriticalAssetAsync(String criticalAssetId) { + return getSecurityMonitoringCriticalAssetWithHttpInfoAsync(criticalAssetId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Get the details of a specific critical asset. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @return ApiResponse<SecurityMonitoringCriticalAssetResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
403 Not Authorized -
404 Not Found -
429 Too many requests -
+ */ + public ApiResponse + getSecurityMonitoringCriticalAssetWithHttpInfo(String criticalAssetId) throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'criticalAssetId' is set + if (criticalAssetId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'criticalAssetId' when calling" + + " getSecurityMonitoringCriticalAsset"); + } + // create path and map variables + String localVarPath = + "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}" + .replaceAll( + "\\{" + "critical_asset_id" + "\\}", + apiClient.escapeString(criticalAssetId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.getSecurityMonitoringCriticalAsset", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get a critical asset. + * + *

See {@link #getSecurityMonitoringCriticalAssetWithHttpInfo}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @return CompletableFuture<ApiResponse<SecurityMonitoringCriticalAssetResponse>> + */ + public CompletableFuture> + getSecurityMonitoringCriticalAssetWithHttpInfoAsync(String criticalAssetId) { + Object localVarPostBody = null; + + // verify the required parameter 'criticalAssetId' is set + if (criticalAssetId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'criticalAssetId' when calling" + + " getSecurityMonitoringCriticalAsset")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}" + .replaceAll( + "\\{" + "critical_asset_id" + "\\}", + apiClient.escapeString(criticalAssetId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.getSecurityMonitoringCriticalAsset", localVarPath, new ArrayList(), localVarHeaderParams, @@ -5145,7 +5723,8 @@ public CompletableFuture> getSecurityFilterW new String[] {"application/json"}, new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); } catch (ApiException ex) { - CompletableFuture> result = new CompletableFuture<>(); + CompletableFuture> result = + new CompletableFuture<>(); result.completeExceptionally(ex); return result; } @@ -5157,7 +5736,7 @@ public CompletableFuture> getSecurityFilterW localVarPostBody, new HashMap(), false, - new GenericType() {}); + new GenericType() {}); } /** @@ -8981,6 +9560,183 @@ public ApiResponse listSecurityFindingsWithHttpInf new GenericType() {}); } + /** Manage optional parameters to listSecurityMonitoringCriticalAssets. */ + public static class ListSecurityMonitoringCriticalAssetsOptionalParameters { + private String query; + + /** + * Set query. + * + * @param query Query string. (optional) + * @return ListSecurityMonitoringCriticalAssetsOptionalParameters + */ + public ListSecurityMonitoringCriticalAssetsOptionalParameters query(String query) { + this.query = query; + return this; + } + } + + /** + * Get all critical assets. + * + *

See {@link #listSecurityMonitoringCriticalAssetsWithHttpInfo}. + * + * @return SecurityMonitoringCriticalAssetsResponse + * @throws ApiException if fails to make API call + */ + public SecurityMonitoringCriticalAssetsResponse listSecurityMonitoringCriticalAssets() + throws ApiException { + return listSecurityMonitoringCriticalAssetsWithHttpInfo( + new ListSecurityMonitoringCriticalAssetsOptionalParameters()) + .getData(); + } + + /** + * Get all critical assets. + * + *

See {@link #listSecurityMonitoringCriticalAssetsWithHttpInfoAsync}. + * + * @return CompletableFuture<SecurityMonitoringCriticalAssetsResponse> + */ + public CompletableFuture + listSecurityMonitoringCriticalAssetsAsync() { + return listSecurityMonitoringCriticalAssetsWithHttpInfoAsync( + new ListSecurityMonitoringCriticalAssetsOptionalParameters()) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Get all critical assets. + * + *

See {@link #listSecurityMonitoringCriticalAssetsWithHttpInfo}. + * + * @param parameters Optional parameters for the request. + * @return SecurityMonitoringCriticalAssetsResponse + * @throws ApiException if fails to make API call + */ + public SecurityMonitoringCriticalAssetsResponse listSecurityMonitoringCriticalAssets( + ListSecurityMonitoringCriticalAssetsOptionalParameters parameters) throws ApiException { + return listSecurityMonitoringCriticalAssetsWithHttpInfo(parameters).getData(); + } + + /** + * Get all critical assets. + * + *

See {@link #listSecurityMonitoringCriticalAssetsWithHttpInfoAsync}. + * + * @param parameters Optional parameters for the request. + * @return CompletableFuture<SecurityMonitoringCriticalAssetsResponse> + */ + public CompletableFuture + listSecurityMonitoringCriticalAssetsAsync( + ListSecurityMonitoringCriticalAssetsOptionalParameters parameters) { + return listSecurityMonitoringCriticalAssetsWithHttpInfoAsync(parameters) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Get the list of all critical assets. + * + * @param parameters Optional parameters for the request. + * @return ApiResponse<SecurityMonitoringCriticalAssetsResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
403 Not Authorized -
429 Too many requests -
+ */ + public ApiResponse + listSecurityMonitoringCriticalAssetsWithHttpInfo( + ListSecurityMonitoringCriticalAssetsOptionalParameters parameters) throws ApiException { + Object localVarPostBody = null; + String query = parameters.query; + // create path and map variables + String localVarPath = "/api/v2/security_monitoring/configuration/critical_assets"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "query", query)); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.listSecurityMonitoringCriticalAssets", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get all critical assets. + * + *

See {@link #listSecurityMonitoringCriticalAssetsWithHttpInfo}. + * + * @param parameters Optional parameters for the request. + * @return CompletableFuture<ApiResponse<SecurityMonitoringCriticalAssetsResponse>> + */ + public CompletableFuture> + listSecurityMonitoringCriticalAssetsWithHttpInfoAsync( + ListSecurityMonitoringCriticalAssetsOptionalParameters parameters) { + Object localVarPostBody = null; + String query = parameters.query; + // create path and map variables + String localVarPath = "/api/v2/security_monitoring/configuration/critical_assets"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "query", query)); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.listSecurityMonitoringCriticalAssets", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + /** Manage optional parameters to listSecurityMonitoringHistsignals. */ public static class ListSecurityMonitoringHistsignalsOptionalParameters { private String filterQuery; @@ -13892,6 +14648,184 @@ public ApiResponse updateSecurityFilterWithHttpInfo( new GenericType() {}); } + /** + * Update a critical asset. + * + *

See {@link #updateSecurityMonitoringCriticalAssetWithHttpInfo}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @param body New definition of the critical asset. Supports partial updates. (required) + * @return SecurityMonitoringCriticalAssetResponse + * @throws ApiException if fails to make API call + */ + public SecurityMonitoringCriticalAssetResponse updateSecurityMonitoringCriticalAsset( + String criticalAssetId, SecurityMonitoringCriticalAssetUpdateRequest body) + throws ApiException { + return updateSecurityMonitoringCriticalAssetWithHttpInfo(criticalAssetId, body).getData(); + } + + /** + * Update a critical asset. + * + *

See {@link #updateSecurityMonitoringCriticalAssetWithHttpInfoAsync}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @param body New definition of the critical asset. Supports partial updates. (required) + * @return CompletableFuture<SecurityMonitoringCriticalAssetResponse> + */ + public CompletableFuture + updateSecurityMonitoringCriticalAssetAsync( + String criticalAssetId, SecurityMonitoringCriticalAssetUpdateRequest body) { + return updateSecurityMonitoringCriticalAssetWithHttpInfoAsync(criticalAssetId, body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Update a specific critical asset. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @param body New definition of the critical asset. Supports partial updates. (required) + * @return ApiResponse<SecurityMonitoringCriticalAssetResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
403 Not Authorized -
404 Not Found -
409 Concurrent Modification -
429 Too many requests -
+ */ + public ApiResponse + updateSecurityMonitoringCriticalAssetWithHttpInfo( + String criticalAssetId, SecurityMonitoringCriticalAssetUpdateRequest body) + throws ApiException { + Object localVarPostBody = body; + + // verify the required parameter 'criticalAssetId' is set + if (criticalAssetId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'criticalAssetId' when calling" + + " updateSecurityMonitoringCriticalAsset"); + } + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, + "Missing the required parameter 'body' when calling" + + " updateSecurityMonitoringCriticalAsset"); + } + // create path and map variables + String localVarPath = + "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}" + .replaceAll( + "\\{" + "critical_asset_id" + "\\}", + apiClient.escapeString(criticalAssetId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.updateSecurityMonitoringCriticalAsset", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "PATCH", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Update a critical asset. + * + *

See {@link #updateSecurityMonitoringCriticalAssetWithHttpInfo}. + * + * @param criticalAssetId The ID of the critical asset. (required) + * @param body New definition of the critical asset. Supports partial updates. (required) + * @return CompletableFuture<ApiResponse<SecurityMonitoringCriticalAssetResponse>> + */ + public CompletableFuture> + updateSecurityMonitoringCriticalAssetWithHttpInfoAsync( + String criticalAssetId, SecurityMonitoringCriticalAssetUpdateRequest body) { + Object localVarPostBody = body; + + // verify the required parameter 'criticalAssetId' is set + if (criticalAssetId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'criticalAssetId' when calling" + + " updateSecurityMonitoringCriticalAsset")); + return result; + } + + // verify the required parameter 'body' is set + if (body == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'body' when calling" + + " updateSecurityMonitoringCriticalAsset")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}" + .replaceAll( + "\\{" + "critical_asset_id" + "\\}", + apiClient.escapeString(criticalAssetId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SecurityMonitoringApi.updateSecurityMonitoringCriticalAsset", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "PATCH", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + /** * Update an existing rule. * diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAsset.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAsset.java new file mode 100644 index 00000000000..a4d887e986f --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAsset.java @@ -0,0 +1,200 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** The critical asset's properties. */ +@JsonPropertyOrder({ + SecurityMonitoringCriticalAsset.JSON_PROPERTY_ATTRIBUTES, + SecurityMonitoringCriticalAsset.JSON_PROPERTY_ID, + SecurityMonitoringCriticalAsset.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAsset { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private SecurityMonitoringCriticalAssetAttributes attributes; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SecurityMonitoringCriticalAssetType type = + SecurityMonitoringCriticalAssetType.CRITICAL_ASSETS; + + public SecurityMonitoringCriticalAsset attributes( + SecurityMonitoringCriticalAssetAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * The attributes of the critical asset. + * + * @return attributes + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SecurityMonitoringCriticalAssetAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SecurityMonitoringCriticalAssetAttributes attributes) { + this.attributes = attributes; + } + + public SecurityMonitoringCriticalAsset id(String id) { + this.id = id; + return this; + } + + /** + * The ID of the critical asset. + * + * @return id + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public SecurityMonitoringCriticalAsset type(SecurityMonitoringCriticalAssetType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of the resource. The value should always be critical_assets. + * + * @return type + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SecurityMonitoringCriticalAssetType getType() { + return type; + } + + public void setType(SecurityMonitoringCriticalAssetType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAsset + */ + @JsonAnySetter + public SecurityMonitoringCriticalAsset putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAsset object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAsset securityMonitoringCriticalAsset = + (SecurityMonitoringCriticalAsset) o; + return Objects.equals(this.attributes, securityMonitoringCriticalAsset.attributes) + && Objects.equals(this.id, securityMonitoringCriticalAsset.id) + && Objects.equals(this.type, securityMonitoringCriticalAsset.type) + && Objects.equals( + this.additionalProperties, securityMonitoringCriticalAsset.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, id, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAsset {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetAttributes.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetAttributes.java new file mode 100644 index 00000000000..4cb6f247b69 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetAttributes.java @@ -0,0 +1,473 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** The attributes of the critical asset. */ +@JsonPropertyOrder({ + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_CREATION_AUTHOR_ID, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_CREATION_DATE, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_CREATOR, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_ENABLED, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_QUERY, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_RULE_QUERY, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_SEVERITY, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_TAGS, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_UPDATE_AUTHOR_ID, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_UPDATE_DATE, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_UPDATER, + SecurityMonitoringCriticalAssetAttributes.JSON_PROPERTY_VERSION +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CREATION_AUTHOR_ID = "creation_author_id"; + private Long creationAuthorId; + + public static final String JSON_PROPERTY_CREATION_DATE = "creation_date"; + private Long creationDate; + + public static final String JSON_PROPERTY_CREATOR = "creator"; + private SecurityMonitoringUser creator; + + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_QUERY = "query"; + private String query; + + public static final String JSON_PROPERTY_RULE_QUERY = "rule_query"; + private String ruleQuery; + + public static final String JSON_PROPERTY_SEVERITY = "severity"; + private SecurityMonitoringCriticalAssetSeverity severity; + + public static final String JSON_PROPERTY_TAGS = "tags"; + private List tags = null; + + public static final String JSON_PROPERTY_UPDATE_AUTHOR_ID = "update_author_id"; + private Long updateAuthorId; + + public static final String JSON_PROPERTY_UPDATE_DATE = "update_date"; + private Long updateDate; + + public static final String JSON_PROPERTY_UPDATER = "updater"; + private SecurityMonitoringUser updater; + + public static final String JSON_PROPERTY_VERSION = "version"; + private Integer version; + + public SecurityMonitoringCriticalAssetAttributes creationAuthorId(Long creationAuthorId) { + this.creationAuthorId = creationAuthorId; + return this; + } + + /** + * ID of user who created the critical asset. + * + * @return creationAuthorId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CREATION_AUTHOR_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getCreationAuthorId() { + return creationAuthorId; + } + + public void setCreationAuthorId(Long creationAuthorId) { + this.creationAuthorId = creationAuthorId; + } + + public SecurityMonitoringCriticalAssetAttributes creationDate(Long creationDate) { + this.creationDate = creationDate; + return this; + } + + /** + * A Unix millisecond timestamp given the creation date of the critical asset. + * + * @return creationDate + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CREATION_DATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getCreationDate() { + return creationDate; + } + + public void setCreationDate(Long creationDate) { + this.creationDate = creationDate; + } + + public SecurityMonitoringCriticalAssetAttributes creator(SecurityMonitoringUser creator) { + this.creator = creator; + this.unparsed |= creator.unparsed; + return this; + } + + /** + * A user. + * + * @return creator + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CREATOR) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SecurityMonitoringUser getCreator() { + return creator; + } + + public void setCreator(SecurityMonitoringUser creator) { + this.creator = creator; + } + + public SecurityMonitoringCriticalAssetAttributes enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Whether the critical asset is enabled. + * + * @return enabled + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public SecurityMonitoringCriticalAssetAttributes query(String query) { + this.query = query; + return this; + } + + /** + * The query for the critical asset. It uses the same syntax as the queries to search signals in + * the Signals Explorer. + * + * @return query + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } + + public SecurityMonitoringCriticalAssetAttributes ruleQuery(String ruleQuery) { + this.ruleQuery = ruleQuery; + return this; + } + + /** + * The rule query of the critical asset, with the same syntax as the search bar for detection + * rules. This determines which rules this critical asset will apply to. + * + * @return ruleQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RULE_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getRuleQuery() { + return ruleQuery; + } + + public void setRuleQuery(String ruleQuery) { + this.ruleQuery = ruleQuery; + } + + public SecurityMonitoringCriticalAssetAttributes severity( + SecurityMonitoringCriticalAssetSeverity severity) { + this.severity = severity; + this.unparsed |= !severity.isValid(); + return this; + } + + /** + * Severity associated with this critical asset. Either an explicit severity can be set, or the + * severity can be increased or decreased. + * + * @return severity + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SEVERITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SecurityMonitoringCriticalAssetSeverity getSeverity() { + return severity; + } + + public void setSeverity(SecurityMonitoringCriticalAssetSeverity severity) { + if (!severity.isValid()) { + this.unparsed = true; + } + this.severity = severity; + } + + public SecurityMonitoringCriticalAssetAttributes tags(List tags) { + this.tags = tags; + return this; + } + + public SecurityMonitoringCriticalAssetAttributes addTagsItem(String tagsItem) { + if (this.tags == null) { + this.tags = new ArrayList<>(); + } + this.tags.add(tagsItem); + return this; + } + + /** + * List of tags associated with the critical asset. + * + * @return tags + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TAGS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public SecurityMonitoringCriticalAssetAttributes updateAuthorId(Long updateAuthorId) { + this.updateAuthorId = updateAuthorId; + return this; + } + + /** + * ID of user who updated the critical asset. + * + * @return updateAuthorId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_UPDATE_AUTHOR_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getUpdateAuthorId() { + return updateAuthorId; + } + + public void setUpdateAuthorId(Long updateAuthorId) { + this.updateAuthorId = updateAuthorId; + } + + public SecurityMonitoringCriticalAssetAttributes updateDate(Long updateDate) { + this.updateDate = updateDate; + return this; + } + + /** + * A Unix millisecond timestamp given the update date of the critical asset. + * + * @return updateDate + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_UPDATE_DATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Long updateDate) { + this.updateDate = updateDate; + } + + public SecurityMonitoringCriticalAssetAttributes updater(SecurityMonitoringUser updater) { + this.updater = updater; + this.unparsed |= updater.unparsed; + return this; + } + + /** + * A user. + * + * @return updater + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_UPDATER) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SecurityMonitoringUser getUpdater() { + return updater; + } + + public void setUpdater(SecurityMonitoringUser updater) { + this.updater = updater; + } + + public SecurityMonitoringCriticalAssetAttributes version(Integer version) { + this.version = version; + return this; + } + + /** + * The version of the critical asset; it starts at 1, and is incremented at each update. maximum: + * 2147483647 + * + * @return version + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_VERSION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Integer getVersion() { + return version; + } + + public void setVersion(Integer version) { + this.version = version; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetAttributes + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetAttributes putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetAttributes securityMonitoringCriticalAssetAttributes = + (SecurityMonitoringCriticalAssetAttributes) o; + return Objects.equals( + this.creationAuthorId, securityMonitoringCriticalAssetAttributes.creationAuthorId) + && Objects.equals(this.creationDate, securityMonitoringCriticalAssetAttributes.creationDate) + && Objects.equals(this.creator, securityMonitoringCriticalAssetAttributes.creator) + && Objects.equals(this.enabled, securityMonitoringCriticalAssetAttributes.enabled) + && Objects.equals(this.query, securityMonitoringCriticalAssetAttributes.query) + && Objects.equals(this.ruleQuery, securityMonitoringCriticalAssetAttributes.ruleQuery) + && Objects.equals(this.severity, securityMonitoringCriticalAssetAttributes.severity) + && Objects.equals(this.tags, securityMonitoringCriticalAssetAttributes.tags) + && Objects.equals( + this.updateAuthorId, securityMonitoringCriticalAssetAttributes.updateAuthorId) + && Objects.equals(this.updateDate, securityMonitoringCriticalAssetAttributes.updateDate) + && Objects.equals(this.updater, securityMonitoringCriticalAssetAttributes.updater) + && Objects.equals(this.version, securityMonitoringCriticalAssetAttributes.version) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + creationAuthorId, + creationDate, + creator, + enabled, + query, + ruleQuery, + severity, + tags, + updateAuthorId, + updateDate, + updater, + version, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetAttributes {\n"); + sb.append(" creationAuthorId: ").append(toIndentedString(creationAuthorId)).append("\n"); + sb.append(" creationDate: ").append(toIndentedString(creationDate)).append("\n"); + sb.append(" creator: ").append(toIndentedString(creator)).append("\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" query: ").append(toIndentedString(query)).append("\n"); + sb.append(" ruleQuery: ").append(toIndentedString(ruleQuery)).append("\n"); + sb.append(" severity: ").append(toIndentedString(severity)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" updateAuthorId: ").append(toIndentedString(updateAuthorId)).append("\n"); + sb.append(" updateDate: ").append(toIndentedString(updateDate)).append("\n"); + sb.append(" updater: ").append(toIndentedString(updater)).append("\n"); + sb.append(" version: ").append(toIndentedString(version)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateAttributes.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateAttributes.java new file mode 100644 index 00000000000..daa4684cd93 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateAttributes.java @@ -0,0 +1,280 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** Object containing the attributes of the critical asset to be created. */ +@JsonPropertyOrder({ + SecurityMonitoringCriticalAssetCreateAttributes.JSON_PROPERTY_ENABLED, + SecurityMonitoringCriticalAssetCreateAttributes.JSON_PROPERTY_QUERY, + SecurityMonitoringCriticalAssetCreateAttributes.JSON_PROPERTY_RULE_QUERY, + SecurityMonitoringCriticalAssetCreateAttributes.JSON_PROPERTY_SEVERITY, + SecurityMonitoringCriticalAssetCreateAttributes.JSON_PROPERTY_TAGS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetCreateAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled = true; + + public static final String JSON_PROPERTY_QUERY = "query"; + private String query; + + public static final String JSON_PROPERTY_RULE_QUERY = "rule_query"; + private String ruleQuery; + + public static final String JSON_PROPERTY_SEVERITY = "severity"; + private SecurityMonitoringCriticalAssetSeverity severity; + + public static final String JSON_PROPERTY_TAGS = "tags"; + private List tags = null; + + public SecurityMonitoringCriticalAssetCreateAttributes() {} + + @JsonCreator + public SecurityMonitoringCriticalAssetCreateAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_QUERY) String query, + @JsonProperty(required = true, value = JSON_PROPERTY_RULE_QUERY) String ruleQuery, + @JsonProperty(required = true, value = JSON_PROPERTY_SEVERITY) + SecurityMonitoringCriticalAssetSeverity severity) { + this.query = query; + this.ruleQuery = ruleQuery; + this.severity = severity; + this.unparsed |= !severity.isValid(); + } + + public SecurityMonitoringCriticalAssetCreateAttributes enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Whether the critical asset is enabled. Defaults to true if not specified. + * + * @return enabled + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public SecurityMonitoringCriticalAssetCreateAttributes query(String query) { + this.query = query; + return this; + } + + /** + * The query for the critical asset. It uses the same syntax as the queries to search signals in + * the Signals Explorer. + * + * @return query + */ + @JsonProperty(JSON_PROPERTY_QUERY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } + + public SecurityMonitoringCriticalAssetCreateAttributes ruleQuery(String ruleQuery) { + this.ruleQuery = ruleQuery; + return this; + } + + /** + * The rule query of the critical asset, with the same syntax as the search bar for detection + * rules. This determines which rules this critical asset will apply to. + * + * @return ruleQuery + */ + @JsonProperty(JSON_PROPERTY_RULE_QUERY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getRuleQuery() { + return ruleQuery; + } + + public void setRuleQuery(String ruleQuery) { + this.ruleQuery = ruleQuery; + } + + public SecurityMonitoringCriticalAssetCreateAttributes severity( + SecurityMonitoringCriticalAssetSeverity severity) { + this.severity = severity; + this.unparsed |= !severity.isValid(); + return this; + } + + /** + * Severity associated with this critical asset. Either an explicit severity can be set, or the + * severity can be increased or decreased. + * + * @return severity + */ + @JsonProperty(JSON_PROPERTY_SEVERITY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringCriticalAssetSeverity getSeverity() { + return severity; + } + + public void setSeverity(SecurityMonitoringCriticalAssetSeverity severity) { + if (!severity.isValid()) { + this.unparsed = true; + } + this.severity = severity; + } + + public SecurityMonitoringCriticalAssetCreateAttributes tags(List tags) { + this.tags = tags; + return this; + } + + public SecurityMonitoringCriticalAssetCreateAttributes addTagsItem(String tagsItem) { + if (this.tags == null) { + this.tags = new ArrayList<>(); + } + this.tags.add(tagsItem); + return this; + } + + /** + * List of tags associated with the critical asset. + * + * @return tags + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TAGS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetCreateAttributes + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetCreateAttributes putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetCreateAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetCreateAttributes + securityMonitoringCriticalAssetCreateAttributes = + (SecurityMonitoringCriticalAssetCreateAttributes) o; + return Objects.equals(this.enabled, securityMonitoringCriticalAssetCreateAttributes.enabled) + && Objects.equals(this.query, securityMonitoringCriticalAssetCreateAttributes.query) + && Objects.equals(this.ruleQuery, securityMonitoringCriticalAssetCreateAttributes.ruleQuery) + && Objects.equals(this.severity, securityMonitoringCriticalAssetCreateAttributes.severity) + && Objects.equals(this.tags, securityMonitoringCriticalAssetCreateAttributes.tags) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetCreateAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(enabled, query, ruleQuery, severity, tags, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetCreateAttributes {\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" query: ").append(toIndentedString(query)).append("\n"); + sb.append(" ruleQuery: ").append(toIndentedString(ruleQuery)).append("\n"); + sb.append(" severity: ").append(toIndentedString(severity)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateData.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateData.java new file mode 100644 index 00000000000..573331e0c27 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateData.java @@ -0,0 +1,187 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Object for a single critical asset. */ +@JsonPropertyOrder({ + SecurityMonitoringCriticalAssetCreateData.JSON_PROPERTY_ATTRIBUTES, + SecurityMonitoringCriticalAssetCreateData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetCreateData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private SecurityMonitoringCriticalAssetCreateAttributes attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SecurityMonitoringCriticalAssetType type = + SecurityMonitoringCriticalAssetType.CRITICAL_ASSETS; + + public SecurityMonitoringCriticalAssetCreateData() {} + + @JsonCreator + public SecurityMonitoringCriticalAssetCreateData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + SecurityMonitoringCriticalAssetCreateAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + SecurityMonitoringCriticalAssetType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public SecurityMonitoringCriticalAssetCreateData attributes( + SecurityMonitoringCriticalAssetCreateAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Object containing the attributes of the critical asset to be created. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringCriticalAssetCreateAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SecurityMonitoringCriticalAssetCreateAttributes attributes) { + this.attributes = attributes; + } + + public SecurityMonitoringCriticalAssetCreateData type(SecurityMonitoringCriticalAssetType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of the resource. The value should always be critical_assets. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringCriticalAssetType getType() { + return type; + } + + public void setType(SecurityMonitoringCriticalAssetType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetCreateData + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetCreateData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetCreateData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetCreateData securityMonitoringCriticalAssetCreateData = + (SecurityMonitoringCriticalAssetCreateData) o; + return Objects.equals(this.attributes, securityMonitoringCriticalAssetCreateData.attributes) + && Objects.equals(this.type, securityMonitoringCriticalAssetCreateData.type) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetCreateData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetCreateData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateRequest.java new file mode 100644 index 00000000000..f7fa53788ce --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetCreateRequest.java @@ -0,0 +1,151 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Request object that includes the critical asset that you would like to create. */ +@JsonPropertyOrder({SecurityMonitoringCriticalAssetCreateRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetCreateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private SecurityMonitoringCriticalAssetCreateData data; + + public SecurityMonitoringCriticalAssetCreateRequest() {} + + @JsonCreator + public SecurityMonitoringCriticalAssetCreateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + SecurityMonitoringCriticalAssetCreateData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public SecurityMonitoringCriticalAssetCreateRequest data( + SecurityMonitoringCriticalAssetCreateData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * Object for a single critical asset. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringCriticalAssetCreateData getData() { + return data; + } + + public void setData(SecurityMonitoringCriticalAssetCreateData data) { + this.data = data; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetCreateRequest + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetCreateRequest putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetCreateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetCreateRequest securityMonitoringCriticalAssetCreateRequest = + (SecurityMonitoringCriticalAssetCreateRequest) o; + return Objects.equals(this.data, securityMonitoringCriticalAssetCreateRequest.data) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetCreateRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetCreateRequest {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetResponse.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetResponse.java new file mode 100644 index 00000000000..c851dabf115 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetResponse.java @@ -0,0 +1,139 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Response object containing a single critical asset. */ +@JsonPropertyOrder({SecurityMonitoringCriticalAssetResponse.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private SecurityMonitoringCriticalAsset data; + + public SecurityMonitoringCriticalAssetResponse data(SecurityMonitoringCriticalAsset data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * The critical asset's properties. + * + * @return data + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SecurityMonitoringCriticalAsset getData() { + return data; + } + + public void setData(SecurityMonitoringCriticalAsset data) { + this.data = data; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetResponse + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetResponse securityMonitoringCriticalAssetResponse = + (SecurityMonitoringCriticalAssetResponse) o; + return Objects.equals(this.data, securityMonitoringCriticalAssetResponse.data) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetSeverity.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetSeverity.java new file mode 100644 index 00000000000..a209681a0d8 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetSeverity.java @@ -0,0 +1,79 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * Severity associated with this critical asset. Either an explicit severity can be set, or the + * severity can be increased or decreased. + */ +@JsonSerialize( + using = + SecurityMonitoringCriticalAssetSeverity.SecurityMonitoringCriticalAssetSeveritySerializer + .class) +public class SecurityMonitoringCriticalAssetSeverity extends ModelEnum { + + private static final Set allowedValues = + new HashSet( + Arrays.asList("info", "low", "medium", "high", "critical", "increase", "decrease")); + + public static final SecurityMonitoringCriticalAssetSeverity INFO = + new SecurityMonitoringCriticalAssetSeverity("info"); + public static final SecurityMonitoringCriticalAssetSeverity LOW = + new SecurityMonitoringCriticalAssetSeverity("low"); + public static final SecurityMonitoringCriticalAssetSeverity MEDIUM = + new SecurityMonitoringCriticalAssetSeverity("medium"); + public static final SecurityMonitoringCriticalAssetSeverity HIGH = + new SecurityMonitoringCriticalAssetSeverity("high"); + public static final SecurityMonitoringCriticalAssetSeverity CRITICAL = + new SecurityMonitoringCriticalAssetSeverity("critical"); + public static final SecurityMonitoringCriticalAssetSeverity INCREASE = + new SecurityMonitoringCriticalAssetSeverity("increase"); + public static final SecurityMonitoringCriticalAssetSeverity DECREASE = + new SecurityMonitoringCriticalAssetSeverity("decrease"); + + SecurityMonitoringCriticalAssetSeverity(String value) { + super(value, allowedValues); + } + + public static class SecurityMonitoringCriticalAssetSeveritySerializer + extends StdSerializer { + public SecurityMonitoringCriticalAssetSeveritySerializer( + Class t) { + super(t); + } + + public SecurityMonitoringCriticalAssetSeveritySerializer() { + this(null); + } + + @Override + public void serialize( + SecurityMonitoringCriticalAssetSeverity value, + JsonGenerator jgen, + SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SecurityMonitoringCriticalAssetSeverity fromValue(String value) { + return new SecurityMonitoringCriticalAssetSeverity(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetType.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetType.java new file mode 100644 index 00000000000..bce7f9d31f4 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetType.java @@ -0,0 +1,59 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The type of the resource. The value should always be critical_assets. */ +@JsonSerialize( + using = SecurityMonitoringCriticalAssetType.SecurityMonitoringCriticalAssetTypeSerializer.class) +public class SecurityMonitoringCriticalAssetType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("critical_assets")); + + public static final SecurityMonitoringCriticalAssetType CRITICAL_ASSETS = + new SecurityMonitoringCriticalAssetType("critical_assets"); + + SecurityMonitoringCriticalAssetType(String value) { + super(value, allowedValues); + } + + public static class SecurityMonitoringCriticalAssetTypeSerializer + extends StdSerializer { + public SecurityMonitoringCriticalAssetTypeSerializer( + Class t) { + super(t); + } + + public SecurityMonitoringCriticalAssetTypeSerializer() { + this(null); + } + + @Override + public void serialize( + SecurityMonitoringCriticalAssetType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SecurityMonitoringCriticalAssetType fromValue(String value) { + return new SecurityMonitoringCriticalAssetType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateAttributes.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateAttributes.java new file mode 100644 index 00000000000..43619071ae0 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateAttributes.java @@ -0,0 +1,296 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** The critical asset properties to be updated. */ +@JsonPropertyOrder({ + SecurityMonitoringCriticalAssetUpdateAttributes.JSON_PROPERTY_ENABLED, + SecurityMonitoringCriticalAssetUpdateAttributes.JSON_PROPERTY_QUERY, + SecurityMonitoringCriticalAssetUpdateAttributes.JSON_PROPERTY_RULE_QUERY, + SecurityMonitoringCriticalAssetUpdateAttributes.JSON_PROPERTY_SEVERITY, + SecurityMonitoringCriticalAssetUpdateAttributes.JSON_PROPERTY_TAGS, + SecurityMonitoringCriticalAssetUpdateAttributes.JSON_PROPERTY_VERSION +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetUpdateAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ENABLED = "enabled"; + private Boolean enabled; + + public static final String JSON_PROPERTY_QUERY = "query"; + private String query; + + public static final String JSON_PROPERTY_RULE_QUERY = "rule_query"; + private String ruleQuery; + + public static final String JSON_PROPERTY_SEVERITY = "severity"; + private SecurityMonitoringCriticalAssetSeverity severity; + + public static final String JSON_PROPERTY_TAGS = "tags"; + private List tags = null; + + public static final String JSON_PROPERTY_VERSION = "version"; + private Integer version; + + public SecurityMonitoringCriticalAssetUpdateAttributes enabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Whether the critical asset is enabled. + * + * @return enabled + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ENABLED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public SecurityMonitoringCriticalAssetUpdateAttributes query(String query) { + this.query = query; + return this; + } + + /** + * The query for the critical asset. It uses the same syntax as the queries to search signals in + * the Signals Explorer. + * + * @return query + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } + + public SecurityMonitoringCriticalAssetUpdateAttributes ruleQuery(String ruleQuery) { + this.ruleQuery = ruleQuery; + return this; + } + + /** + * The rule query of the critical asset, with the same syntax as the search bar for detection + * rules. This determines which rules this critical asset will apply to. + * + * @return ruleQuery + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RULE_QUERY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getRuleQuery() { + return ruleQuery; + } + + public void setRuleQuery(String ruleQuery) { + this.ruleQuery = ruleQuery; + } + + public SecurityMonitoringCriticalAssetUpdateAttributes severity( + SecurityMonitoringCriticalAssetSeverity severity) { + this.severity = severity; + this.unparsed |= !severity.isValid(); + return this; + } + + /** + * Severity associated with this critical asset. Either an explicit severity can be set, or the + * severity can be increased or decreased. + * + * @return severity + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SEVERITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SecurityMonitoringCriticalAssetSeverity getSeverity() { + return severity; + } + + public void setSeverity(SecurityMonitoringCriticalAssetSeverity severity) { + if (!severity.isValid()) { + this.unparsed = true; + } + this.severity = severity; + } + + public SecurityMonitoringCriticalAssetUpdateAttributes tags(List tags) { + this.tags = tags; + return this; + } + + public SecurityMonitoringCriticalAssetUpdateAttributes addTagsItem(String tagsItem) { + if (this.tags == null) { + this.tags = new ArrayList<>(); + } + this.tags.add(tagsItem); + return this; + } + + /** + * List of tags associated with the critical asset. + * + * @return tags + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TAGS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public SecurityMonitoringCriticalAssetUpdateAttributes version(Integer version) { + this.version = version; + return this; + } + + /** + * The version of the critical asset being updated. Used for optimistic locking to prevent + * concurrent modifications. maximum: 2147483647 + * + * @return version + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_VERSION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Integer getVersion() { + return version; + } + + public void setVersion(Integer version) { + this.version = version; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetUpdateAttributes + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetUpdateAttributes putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetUpdateAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetUpdateAttributes + securityMonitoringCriticalAssetUpdateAttributes = + (SecurityMonitoringCriticalAssetUpdateAttributes) o; + return Objects.equals(this.enabled, securityMonitoringCriticalAssetUpdateAttributes.enabled) + && Objects.equals(this.query, securityMonitoringCriticalAssetUpdateAttributes.query) + && Objects.equals(this.ruleQuery, securityMonitoringCriticalAssetUpdateAttributes.ruleQuery) + && Objects.equals(this.severity, securityMonitoringCriticalAssetUpdateAttributes.severity) + && Objects.equals(this.tags, securityMonitoringCriticalAssetUpdateAttributes.tags) + && Objects.equals(this.version, securityMonitoringCriticalAssetUpdateAttributes.version) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetUpdateAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(enabled, query, ruleQuery, severity, tags, version, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetUpdateAttributes {\n"); + sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); + sb.append(" query: ").append(toIndentedString(query)).append("\n"); + sb.append(" ruleQuery: ").append(toIndentedString(ruleQuery)).append("\n"); + sb.append(" severity: ").append(toIndentedString(severity)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" version: ").append(toIndentedString(version)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateData.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateData.java new file mode 100644 index 00000000000..245d110b406 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateData.java @@ -0,0 +1,187 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** The new critical asset properties; partial updates are supported. */ +@JsonPropertyOrder({ + SecurityMonitoringCriticalAssetUpdateData.JSON_PROPERTY_ATTRIBUTES, + SecurityMonitoringCriticalAssetUpdateData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetUpdateData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private SecurityMonitoringCriticalAssetUpdateAttributes attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SecurityMonitoringCriticalAssetType type = + SecurityMonitoringCriticalAssetType.CRITICAL_ASSETS; + + public SecurityMonitoringCriticalAssetUpdateData() {} + + @JsonCreator + public SecurityMonitoringCriticalAssetUpdateData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + SecurityMonitoringCriticalAssetUpdateAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) + SecurityMonitoringCriticalAssetType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public SecurityMonitoringCriticalAssetUpdateData attributes( + SecurityMonitoringCriticalAssetUpdateAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * The critical asset properties to be updated. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringCriticalAssetUpdateAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SecurityMonitoringCriticalAssetUpdateAttributes attributes) { + this.attributes = attributes; + } + + public SecurityMonitoringCriticalAssetUpdateData type(SecurityMonitoringCriticalAssetType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The type of the resource. The value should always be critical_assets. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringCriticalAssetType getType() { + return type; + } + + public void setType(SecurityMonitoringCriticalAssetType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetUpdateData + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetUpdateData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetUpdateData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetUpdateData securityMonitoringCriticalAssetUpdateData = + (SecurityMonitoringCriticalAssetUpdateData) o; + return Objects.equals(this.attributes, securityMonitoringCriticalAssetUpdateData.attributes) + && Objects.equals(this.type, securityMonitoringCriticalAssetUpdateData.type) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetUpdateData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetUpdateData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateRequest.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateRequest.java new file mode 100644 index 00000000000..12491f3977e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetUpdateRequest.java @@ -0,0 +1,151 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Request object containing the fields to update on the critical asset. */ +@JsonPropertyOrder({SecurityMonitoringCriticalAssetUpdateRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetUpdateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private SecurityMonitoringCriticalAssetUpdateData data; + + public SecurityMonitoringCriticalAssetUpdateRequest() {} + + @JsonCreator + public SecurityMonitoringCriticalAssetUpdateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + SecurityMonitoringCriticalAssetUpdateData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public SecurityMonitoringCriticalAssetUpdateRequest data( + SecurityMonitoringCriticalAssetUpdateData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * The new critical asset properties; partial updates are supported. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public SecurityMonitoringCriticalAssetUpdateData getData() { + return data; + } + + public void setData(SecurityMonitoringCriticalAssetUpdateData data) { + this.data = data; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetUpdateRequest + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetUpdateRequest putAdditionalProperty( + String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetUpdateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetUpdateRequest securityMonitoringCriticalAssetUpdateRequest = + (SecurityMonitoringCriticalAssetUpdateRequest) o; + return Objects.equals(this.data, securityMonitoringCriticalAssetUpdateRequest.data) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetUpdateRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetUpdateRequest {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetsResponse.java b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetsResponse.java new file mode 100644 index 00000000000..aef29c9d02e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SecurityMonitoringCriticalAssetsResponse.java @@ -0,0 +1,153 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** Response object containing the available critical assets. */ +@JsonPropertyOrder({SecurityMonitoringCriticalAssetsResponse.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SecurityMonitoringCriticalAssetsResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private List data = null; + + public SecurityMonitoringCriticalAssetsResponse data(List data) { + this.data = data; + for (SecurityMonitoringCriticalAsset item : data) { + this.unparsed |= item.unparsed; + } + return this; + } + + public SecurityMonitoringCriticalAssetsResponse addDataItem( + SecurityMonitoringCriticalAsset dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + this.unparsed |= dataItem.unparsed; + return this; + } + + /** + * A list of critical assets objects. + * + * @return data + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SecurityMonitoringCriticalAssetsResponse + */ + @JsonAnySetter + public SecurityMonitoringCriticalAssetsResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SecurityMonitoringCriticalAssetsResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SecurityMonitoringCriticalAssetsResponse securityMonitoringCriticalAssetsResponse = + (SecurityMonitoringCriticalAssetsResponse) o; + return Objects.equals(this.data, securityMonitoringCriticalAssetsResponse.data) + && Objects.equals( + this.additionalProperties, + securityMonitoringCriticalAssetsResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SecurityMonitoringCriticalAssetsResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/test/resources/cassettes/features/v2/Create_a_critical_asset_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Create_a_critical_asset_returns_OK_response.freeze new file mode 100644 index 00000000000..04dabca22b4 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_a_critical_asset_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-02T19:09:02.221Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_critical_asset_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Create_a_critical_asset_returns_OK_response.json new file mode 100644 index 00000000000..0a4b91c04b5 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_a_critical_asset_returns_OK_response.json @@ -0,0 +1,53 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"query\":\"host:testcreateacriticalassetreturnsokresponse1767380942\",\"rule_query\":\"type:(log_detection OR signal_correlation OR workload_security OR application_security) source:cloudtrail\",\"severity\":\"decrease\",\"tags\":[\"team:security\",\"env:test\"]},\"type\":\"critical_assets\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/security_monitoring/configuration/critical_assets", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"93d5a224-589d-4d6d-adbf-f6657f484ecc\",\"type\":\"critical_assets\",\"attributes\":{\"creation_author_id\":1445416,\"creation_date\":1767380942322,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"enabled\":true,\"query\":\"host:testcreateacriticalassetreturnsokresponse1767380942\",\"rule_query\":\"type:(log_detection OR signal_correlation OR workload_security OR application_security) source:cloudtrail\",\"severity\":\"decrease\",\"tags\":[\"team:security\",\"env:test\"],\"update_author_id\":1445416,\"update_date\":1767380942322,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "0d28baa6-4867-b45f-82a6-ca26ce287030" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security_monitoring/configuration/critical_assets/93d5a224-589d-4d6d-adbf-f6657f484ecc", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "599cdff0-c43a-200a-52e3-040e0f87675e" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..0eee84fdab4 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-01-02T19:09:07.983Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_Not_Found_response.json new file mode 100644 index 00000000000..5b8ee82b270 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_Not_Found_response.json @@ -0,0 +1,28 @@ +[ + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security_monitoring/configuration/critical_assets/00000000-0000-0000-0000-000000000000", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[\"not_found(Critical asset with ID 00000000-0000-0000-0000-000000000000 not found)\"]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "4e5e5b34-198f-b980-07a8-931fdc0e413d" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_OK_response.freeze new file mode 100644 index 00000000000..b36aecf36b1 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-12T19:41:34.038Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_OK_response.json new file mode 100644 index 00000000000..44970e3b2b4 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Delete_a_critical_asset_returns_OK_response.json @@ -0,0 +1,79 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"query\":\"security:monitoring\",\"rule_query\":\"source:k9\",\"severity\":\"medium\",\"tags\":[\"team:security\"]},\"type\":\"critical_assets\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/security_monitoring/configuration/critical_assets", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"f340fbe7-ed28-466e-924e-7e23475dd405\",\"type\":\"critical_assets\",\"attributes\":{\"creation_author_id\":2320499,\"creation_date\":1768246895425,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"enabled\":true,\"query\":\"security:monitoring\",\"rule_query\":\"source:k9\",\"severity\":\"medium\",\"tags\":[\"team:security\"],\"update_author_id\":2320499,\"update_date\":1768246895425,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "6ffb5b4d-a3b7-6fa1-1d1c-e0464f43c9e6" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security_monitoring/configuration/critical_assets/f340fbe7-ed28-466e-924e-7e23475dd405", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "daaf7fd8-61c2-2ac2-42ae-cd34b2857055" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security_monitoring/configuration/critical_assets/f340fbe7-ed28-466e-924e-7e23475dd405", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[\"not_found(Critical asset with ID f340fbe7-ed28-466e-924e-7e23475dd405 not found)\"]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "daaf7fd8-61c2-2ac2-42ae-cd34b2857056" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..7b90a918329 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-01-02T19:09:12.106Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_Not_Found_response.json new file mode 100644 index 00000000000..9e2835883fb --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_Not_Found_response.json @@ -0,0 +1,28 @@ +[ + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/security_monitoring/configuration/critical_assets/00000000-0000-0000-0000-000000000000", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[\"not_found(Critical asset with ID 00000000-0000-0000-0000-000000000000 not found)\"]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "d4775b63-7aae-469f-0221-6f5d7be0cdd1" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_OK_response.freeze new file mode 100644 index 00000000000..cd9a6196417 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-12T19:41:36.187Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_OK_response.json new file mode 100644 index 00000000000..9190a1a8019 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_a_critical_asset_returns_OK_response.json @@ -0,0 +1,79 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"query\":\"security:monitoring\",\"rule_query\":\"source:k9\",\"severity\":\"medium\",\"tags\":[\"team:security\"]},\"type\":\"critical_assets\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/security_monitoring/configuration/critical_assets", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"a9dfa43c-734a-4984-bed6-68934254cb59\",\"type\":\"critical_assets\",\"attributes\":{\"creation_author_id\":2320499,\"creation_date\":1768246896448,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"enabled\":true,\"query\":\"security:monitoring\",\"rule_query\":\"source:k9\",\"severity\":\"medium\",\"tags\":[\"team:security\"],\"update_author_id\":2320499,\"update_date\":1768246896448,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "6ffb5b4d-a3b7-6fa1-1d1c-e0464f43c9e7" + }, + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/security_monitoring/configuration/critical_assets/a9dfa43c-734a-4984-bed6-68934254cb59", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"a9dfa43c-734a-4984-bed6-68934254cb59\",\"type\":\"critical_assets\",\"attributes\":{\"creation_author_id\":2320499,\"creation_date\":1768246896448,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"enabled\":true,\"query\":\"security:monitoring\",\"rule_query\":\"source:k9\",\"severity\":\"medium\",\"tags\":[\"team:security\"],\"update_author_id\":2320499,\"update_date\":1768246896448,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "a17a7db1-db02-19ec-65f1-31d37d6cfb58" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security_monitoring/configuration/critical_assets/a9dfa43c-734a-4984-bed6-68934254cb59", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "9f625e57-3f34-bf12-72dc-2e32954df60d" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_all_critical_assets_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Get_all_critical_assets_returns_OK_response.freeze new file mode 100644 index 00000000000..73ce7ea8b98 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_all_critical_assets_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-02T19:09:14.824Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_all_critical_assets_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_all_critical_assets_returns_OK_response.json new file mode 100644 index 00000000000..5bf24e4f11b --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_all_critical_assets_returns_OK_response.json @@ -0,0 +1,28 @@ +[ + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/security_monitoring/configuration/critical_assets", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":[]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "04174203-702b-7c9a-ae52-7facd5f268bd" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..8316ba54261 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-01-02T18:44:02.157Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_Not_Found_response.json new file mode 100644 index 00000000000..9f16fd23290 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_Not_Found_response.json @@ -0,0 +1,28 @@ +[ + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/security_monitoring/configuration/critical_assets/rules/aaa-bbb-ccc-ddd", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":[]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "eb71d87b-3e1a-97b7-62bb-6d4e9179c149" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_OK_response.freeze new file mode 100644 index 00000000000..7d88794debb --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-02T19:09:15.164Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_OK_response.json new file mode 100644 index 00000000000..438a1bf116c --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Get_critical_assets_affecting_a_specific_rule_returns_OK_response.json @@ -0,0 +1,79 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"cases\":[{\"condition\":\"a > 0\",\"name\":\"\",\"notifications\":[],\"status\":\"info\"}],\"filters\":[],\"isEnabled\":true,\"message\":\"Test rule\",\"name\":\"Test-Get_critical_assets_affecting_a_specific_rule_returns_OK_response-1767380955\",\"options\":{\"evaluationWindow\":900,\"keepAlive\":3600,\"maxSignalDuration\":86400},\"queries\":[{\"aggregation\":\"count\",\"distinctFields\":[],\"groupByFields\":[],\"metrics\":[],\"query\":\"@test:true\"}],\"tags\":[],\"type\":\"log_detection\"}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/security_monitoring/rules", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"name\":\"Test-Get_critical_assets_affecting_a_specific_rule_returns_OK_response-1767380955\",\"createdAt\":1767380955311,\"isDefault\":false,\"isPartner\":false,\"isEnabled\":true,\"isBeta\":false,\"isDeleted\":false,\"isDeprecated\":false,\"queries\":[{\"query\":\"@test:true\",\"groupByFields\":[],\"hasOptionalGroupByFields\":false,\"distinctFields\":[],\"aggregation\":\"count\",\"name\":\"\",\"dataSource\":\"logs\"}],\"options\":{\"evaluationWindow\":900,\"detectionMethod\":\"threshold\",\"maxSignalDuration\":86400,\"keepAlive\":3600},\"cases\":[{\"name\":\"\",\"status\":\"info\",\"notifications\":[],\"condition\":\"a \\u003e 0\"}],\"message\":\"Test rule\",\"tags\":[],\"hasExtendedTitle\":false,\"type\":\"log_detection\",\"filters\":[],\"version\":1,\"id\":\"kcp-m1q-tmu\",\"blocking\":false,\"metadata\":{\"entities\":null,\"sources\":null},\"creationAuthorId\":1445416,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"updater\":{\"handle\":\"\",\"name\":\"\"}}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "ba41852e-6ced-f10f-1b56-4d095839c21d" + }, + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/security_monitoring/configuration/critical_assets/rules/kcp-m1q-tmu", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":[]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "2bff316f-5444-8492-caf4-3ad74bdf7cba" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security_monitoring/rules/kcp-m1q-tmu", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "d99173e5-8701-bb33-cae9-5f924050add8" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Bad_Request_response.freeze b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Bad_Request_response.freeze new file mode 100644 index 00000000000..bc893621263 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Bad_Request_response.freeze @@ -0,0 +1 @@ +2026-01-02T18:44:09.415Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Bad_Request_response.json b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Bad_Request_response.json new file mode 100644 index 00000000000..3811958abd2 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Bad_Request_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"severity\":\"invalid_severity\"},\"type\":\"critical_assets\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/security_monitoring/configuration/critical_assets/00000000-0000-0000-0000-000000000000", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[\"not_found(Critical asset with ID 00000000-0000-0000-0000-000000000000 not found)\"]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "466a53c7-f679-d1db-0216-f39b6123ef42" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..34439436f4c --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-01-02T19:09:24.526Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Not_Found_response.json new file mode 100644 index 00000000000..a862b895f11 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_Not_Found_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"severity\":\"high\"},\"type\":\"critical_assets\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/security_monitoring/configuration/critical_assets/00000000-0000-0000-0000-000000000001", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[\"not_found(Critical asset with ID 00000000-0000-0000-0000-000000000001 not found)\"]}", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "e4e82e73-e0b7-1ddd-15e2-e4dfc3d0a85e" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_OK_response.freeze new file mode 100644 index 00000000000..8a0b1a02a28 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-01-12T19:41:37.223Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_OK_response.json new file mode 100644 index 00000000000..6b10b1f99cb --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_a_critical_asset_returns_OK_response.json @@ -0,0 +1,83 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"query\":\"security:monitoring\",\"rule_query\":\"source:k9\",\"severity\":\"medium\",\"tags\":[\"team:security\"]},\"type\":\"critical_assets\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/security_monitoring/configuration/critical_assets", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"8fb467ae-b5c8-4bb1-822d-7648fe10a912\",\"type\":\"critical_assets\",\"attributes\":{\"creation_author_id\":2320499,\"creation_date\":1768246897503,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"enabled\":true,\"query\":\"security:monitoring\",\"rule_query\":\"source:k9\",\"severity\":\"medium\",\"tags\":[\"team:security\"],\"update_author_id\":2320499,\"update_date\":1768246897503,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "6ffb5b4d-a3b7-6fa1-1d1c-e0464f43c9e5" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"enabled\":false,\"query\":\"no:alert\",\"rule_query\":\"type:(log_detection OR signal_correlation OR workload_security OR application_security) ruleId:djg-ktx-ipq\",\"severity\":\"decrease\",\"tags\":[\"env:production\"],\"version\":1},\"type\":\"critical_assets\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/security_monitoring/configuration/critical_assets/8fb467ae-b5c8-4bb1-822d-7648fe10a912", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"8fb467ae-b5c8-4bb1-822d-7648fe10a912\",\"type\":\"critical_assets\",\"attributes\":{\"creation_author_id\":2320499,\"creation_date\":1768246897503,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"enabled\":false,\"query\":\"no:alert\",\"rule_query\":\"type:(log_detection OR signal_correlation OR workload_security OR application_security) ruleId:djg-ktx-ipq\",\"severity\":\"decrease\",\"tags\":[\"env:production\"],\"update_author_id\":2320499,\"update_date\":1768246897863,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":2}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "eda47158-957a-4f3c-bfe1-26bf417e8dc7" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/security_monitoring/configuration/critical_assets/8fb467ae-b5c8-4bb1-822d-7648fe10a912", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "19cc5ac4-f50f-5c17-be71-cd051fd0bc4d" + } +] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v2/api/given.json b/src/test/resources/com/datadog/api/client/v2/api/given.json index 3a01a060c5b..c717223ca71 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/given.json +++ b/src/test/resources/com/datadog/api/client/v2/api/given.json @@ -1007,6 +1007,18 @@ "tag": "CSM Threats", "operationId": "CreateCloudWorkloadSecurityAgentRule" }, + { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"critical_assets\",\n \"attributes\": {\n \"query\":\"security:monitoring\",\n \"severity\":\"medium\",\n \"rule_query\":\"source:k9\",\n \"tags\":[\"team:security\"]\n }\n }\n}" + } + ], + "step": "there is a valid \"critical_asset\" in the system", + "key": "critical_asset", + "tag": "Security Monitoring", + "operationId": "CreateSecurityMonitoringCriticalAsset" + }, { "parameters": [ { diff --git a/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature b/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature index a4954459e20..2a6c599c306 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/security_monitoring.feature @@ -293,6 +293,29 @@ Feature: Security Monitoring And the response "message" is equal to "ddd" And the response "options.complianceRuleOptions.resourceType" is equal to "gcp_compute_disk" + @skip @team:DataDog/k9-cloud-security-platform + Scenario: Create a critical asset returns "Bad Request" response + Given new "CreateSecurityMonitoringCriticalAsset" request + And body with value {"data": {"type": "critical_assets", "attributes": {"query": "host:test"}}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Create a critical asset returns "Conflict" response + Given new "CreateSecurityMonitoringCriticalAsset" request + And body with value {"data": {"attributes": {"enabled": true, "query": "security:monitoring", "rule_query": "type:(log_detection OR signal_correlation OR workload_security OR application_security) source:cloudtrail", "severity": "increase", "tags": ["team:database", "source:cloudtrail"]}, "type": "critical_assets"}} + When the request is sent + Then the response status is 409 Conflict + + @skip-validation @team:DataDog/k9-cloud-security-platform + Scenario: Create a critical asset returns "OK" response + Given new "CreateSecurityMonitoringCriticalAsset" request + And body with value {"data": {"type": "critical_assets", "attributes": {"query": "host:{{ unique_lower_alnum }}", "rule_query": "type:(log_detection OR signal_correlation OR workload_security OR application_security) source:cloudtrail", "severity": "decrease", "tags": ["team:security", "env:test"]}}} + When the request is sent + Then the response status is 200 OK + And the response "data.type" is equal to "critical_assets" + And the response "data.attributes.severity" is equal to "decrease" + @team:DataDog/k9-cloud-security-platform Scenario: Create a custom framework returns "Bad Request" response Given new "CreateCustomFramework" request @@ -588,6 +611,21 @@ Feature: Security Monitoring When the request is sent Then the response status is 404 Not Found + @team:DataDog/k9-cloud-security-platform + Scenario: Delete a critical asset returns "Not Found" response + Given new "DeleteSecurityMonitoringCriticalAsset" request + And request contains "critical_asset_id" parameter with value "00000000-0000-0000-0000-000000000000" + When the request is sent + Then the response status is 404 Not Found + + @skip-validation @team:DataDog/k9-cloud-security-platform + Scenario: Delete a critical asset returns "OK" response + Given there is a valid "critical_asset" in the system + And new "DeleteSecurityMonitoringCriticalAsset" request + And request contains "critical_asset_id" parameter from "critical_asset.data.id" + When the request is sent + Then the response status is 204 OK + @team:DataDog/k9-cloud-security-platform Scenario: Delete a custom framework returns "Bad Request" response Given new "DeleteCustomFramework" request @@ -784,6 +822,23 @@ Feature: Security Monitoring And the response "name" is equal to "{{ unique }}_cloud" And the response "id" has the same value as "cloud_configuration_rule.id" + @team:DataDog/k9-cloud-security-platform + Scenario: Get a critical asset returns "Not Found" response + Given new "GetSecurityMonitoringCriticalAsset" request + And request contains "critical_asset_id" parameter with value "00000000-0000-0000-0000-000000000000" + When the request is sent + Then the response status is 404 Not Found + + @skip-validation @team:DataDog/k9-cloud-security-platform + Scenario: Get a critical asset returns "OK" response + Given new "GetSecurityMonitoringCriticalAsset" request + And there is a valid "critical_asset" in the system + And request contains "critical_asset_id" parameter from "critical_asset.data.id" + When the request is sent + Then the response status is 200 OK + And the response "data.attributes.rule_query" has the same value as "critical_asset.data.attributes.rule_query" + And the response "data.attributes.severity" is equal to "medium" + @team:DataDog/k9-cloud-security-platform Scenario: Get a custom framework returns "Bad Request" response Given new "GetCustomFramework" request @@ -1049,6 +1104,12 @@ Feature: Security Monitoring When the request is sent Then the response status is 200 OK + @team:DataDog/k9-cloud-security-platform + Scenario: Get all critical assets returns "OK" response + Given new "ListSecurityMonitoringCriticalAssets" request + When the request is sent + Then the response status is 200 OK + @team:DataDog/k9-cloud-security-platform Scenario: Get all security filters returns "OK" response Given new "ListSecurityFilters" request @@ -1063,6 +1124,21 @@ Feature: Security Monitoring When the request is sent Then the response status is 200 OK + @skip @team:DataDog/k9-cloud-security-platform + Scenario: Get critical assets affecting a specific rule returns "Not Found" response + Given new "GetCriticalAssetsAffectingRule" request + And request contains "rule_id" parameter with value "aaa-bbb-ccc-ddd" + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/k9-cloud-security-platform + Scenario: Get critical assets affecting a specific rule returns "OK" response + Given new "GetCriticalAssetsAffectingRule" request + And there is a valid "security_rule" in the system + And request contains "rule_id" parameter from "security_rule.id" + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/cloud-security-posture-management Scenario: Get details of a signal-based notification rule returns "Bad Request" response Given new "GetSignalNotificationRule" request @@ -1678,6 +1754,43 @@ Feature: Security Monitoring And the response "name" is equal to "{{ unique }}_cloud_updated" And the response "id" has the same value as "cloud_configuration_rule.id" + @skip @team:DataDog/k9-cloud-security-platform + Scenario: Update a critical asset returns "Bad Request" response + Given new "UpdateSecurityMonitoringCriticalAsset" request + And request contains "critical_asset_id" parameter with value "00000000-0000-0000-0000-000000000000" + And body with value {"data": {"type": "critical_assets", "attributes": {"severity": "invalid_severity"}}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/k9-cloud-security-platform + Scenario: Update a critical asset returns "Concurrent Modification" response + Given new "UpdateSecurityMonitoringCriticalAsset" request + And request contains "critical_asset_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"enabled": true, "query": "security:monitoring", "rule_query": "type:log_detection source:cloudtrail", "severity": "increase", "tags": ["technique:T1110-brute-force", "source:cloudtrail"], "version": 1}, "type": "critical_assets"}} + When the request is sent + Then the response status is 409 Concurrent Modification + + @team:DataDog/k9-cloud-security-platform + Scenario: Update a critical asset returns "Not Found" response + Given new "UpdateSecurityMonitoringCriticalAsset" request + And request contains "critical_asset_id" parameter with value "00000000-0000-0000-0000-000000000001" + And body with value {"data": {"type": "critical_assets", "attributes": {"severity": "high"}}} + When the request is sent + Then the response status is 404 Not Found + + @skip-validation @team:DataDog/k9-cloud-security-platform + Scenario: Update a critical asset returns "OK" response + Given new "UpdateSecurityMonitoringCriticalAsset" request + And there is a valid "critical_asset" in the system + And request contains "critical_asset_id" parameter from "critical_asset.data.id" + And body with value {"data": {"type": "critical_assets", "attributes": {"enabled": false, "query": "no:alert", "rule_query": "type:(log_detection OR signal_correlation OR workload_security OR application_security) ruleId:djg-ktx-ipq", "severity": "decrease", "tags": ["env:production"], "version": 1}}} + When the request is sent + Then the response status is 200 OK + And the response "data.type" is equal to "critical_assets" + And the response "data.attributes.severity" is equal to "decrease" + And the response "data.attributes.enabled" is equal to false + And the response "data.attributes.version" is equal to 2 + @team:DataDog/k9-cloud-security-platform Scenario: Update a custom framework returns "Bad Request" response Given new "UpdateCustomFramework" request diff --git a/src/test/resources/com/datadog/api/client/v2/api/undo.json b/src/test/resources/com/datadog/api/client/v2/api/undo.json index 661482db869..421fd893373 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/undo.json +++ b/src/test/resources/com/datadog/api/client/v2/api/undo.json @@ -3988,6 +3988,49 @@ "type": "idempotent" } }, + "ListSecurityMonitoringCriticalAssets": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, + "CreateSecurityMonitoringCriticalAsset": { + "tag": "Security Monitoring", + "undo": { + "operationId": "DeleteSecurityMonitoringCriticalAsset", + "parameters": [ + { + "name": "critical_asset_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "GetCriticalAssetsAffectingRule": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, + "DeleteSecurityMonitoringCriticalAsset": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, + "GetSecurityMonitoringCriticalAsset": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, + "UpdateSecurityMonitoringCriticalAsset": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, "ListSecurityFilters": { "tag": "Security Monitoring", "undo": {