From 7eebbd85482df2530365bd2c64b6d767bf57dd97 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Thu, 15 May 2025 12:59:50 +0000 Subject: [PATCH] Regenerate client from commit 78a2a583 of spec repo --- .apigentools-info | 8 +- .generator/schemas/v2/openapi.yaml | 211 +++++++++++- .../frozen.json | 1 + .../recording.har | 62 ++++ .../frozen.json | 1 + .../recording.har | 66 ++++ .../frozen.json | 1 + .../recording.har | 67 ++++ .../frozen.json | 1 + .../recording.har | 67 ++++ .../GetResourceEvaluationFilters.ts | 22 ++ .../UpdateResourceEvaluationFilters.ts | 33 ++ features/support/scenarios_model_mapping.ts | 22 ++ features/v2/security_monitoring.feature | 29 ++ features/v2/undo.json | 12 + .../apis/SecurityMonitoringApi.ts | 300 ++++++++++++++++++ packages/datadog-api-client-v2/index.ts | 10 + .../GetResourceEvaluationFiltersResponse.ts | 54 ++++ ...etResourceEvaluationFiltersResponseData.ts | 70 ++++ .../models/HistoricalJobOptions.ts | 4 +- .../models/ObjectSerializer.ts | 20 ++ .../models/ResourceFilterAttributes.ts | 61 ++++ .../models/ResourceFilterRequestType.ts | 16 + .../models/SecurityMonitoringRuleKeepAlive.ts | 2 +- ...SecurityMonitoringRuleMaxSignalDuration.ts | 2 +- .../models/SecurityMonitoringRuleOptions.ts | 4 +- .../UpdateResourceEvaluationFiltersRequest.ts | 54 ++++ ...ateResourceEvaluationFiltersRequestData.ts | 72 +++++ ...UpdateResourceEvaluationFiltersResponse.ts | 54 ++++ ...teResourceEvaluationFiltersResponseData.ts | 72 +++++ 30 files changed, 1382 insertions(+), 16 deletions(-) create mode 100644 cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-Bad-Request-response_246392364/frozen.json create mode 100644 cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-Bad-Request-response_246392364/recording.har create mode 100644 cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-OK-response_173046866/frozen.json create mode 100644 cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-OK-response_173046866/recording.har create mode 100644 cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-Bad-Request-response_2791151049/frozen.json create mode 100644 cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-Bad-Request-response_2791151049/recording.har create mode 100644 cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-OK-response_957598533/frozen.json create mode 100644 cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-OK-response_957598533/recording.har create mode 100644 examples/v2/security-monitoring/GetResourceEvaluationFilters.ts create mode 100644 examples/v2/security-monitoring/UpdateResourceEvaluationFilters.ts create mode 100644 packages/datadog-api-client-v2/models/GetResourceEvaluationFiltersResponse.ts create mode 100644 packages/datadog-api-client-v2/models/GetResourceEvaluationFiltersResponseData.ts create mode 100644 packages/datadog-api-client-v2/models/ResourceFilterAttributes.ts create mode 100644 packages/datadog-api-client-v2/models/ResourceFilterRequestType.ts create mode 100644 packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersRequest.ts create mode 100644 packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersRequestData.ts create mode 100644 packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersResponse.ts create mode 100644 packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersResponseData.ts diff --git a/.apigentools-info b/.apigentools-info index e1659d30071c..01a16da41df9 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2025-05-14 15:44:19.067688", - "spec_repo_commit": "64f5e7ee" + "regenerated": "2025-05-15 12:58:02.135597", + "spec_repo_commit": "78a2a583" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2025-05-14 15:44:19.084378", - "spec_repo_commit": "64f5e7ee" + "regenerated": "2025-05-15 12:58:02.154024", + "spec_repo_commit": "78a2a583" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 094dc6eb79f1..6d70b4b8a737 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -689,6 +689,21 @@ components: required: true schema: type: string + ResourceFilterAccountID: + description: Filter resource filters by cloud provider account ID. This parameter + is only valid when provider is specified. + in: query + name: account_id + required: false + schema: + type: string + ResourceFilterProvider: + description: Filter resource filters by cloud provider (e.g. aws, gcp, azure). + in: query + name: cloud_provider + required: false + schema: + type: string ResourceID: description: 'Identifier, formatted as `type:id`. Supported types: `connection`, `dashboard`, `integration-account`, `integration-service`, `integration-webhook`, @@ -807,6 +822,13 @@ components: required: true schema: type: string + SkipCache: + description: Skip cache for resource filters. + in: query + name: skip_cache + required: false + schema: + type: boolean SpansMetricIDParameter: description: The name of the span-based metric. in: path @@ -15715,6 +15737,26 @@ components: $ref: '#/components/schemas/GetInterfacesData' type: array type: object + GetResourceEvaluationFiltersResponse: + description: The definition of `GetResourceEvaluationFiltersResponse` object. + properties: + data: + $ref: '#/components/schemas/GetResourceEvaluationFiltersResponseData' + required: + - data + type: object + GetResourceEvaluationFiltersResponseData: + description: The definition of `GetResourceFilterResponseData` object. + properties: + attributes: + $ref: '#/components/schemas/ResourceFilterAttributes' + id: + description: The `data` `id`. + example: csm_resource_filter + type: string + type: + $ref: '#/components/schemas/ResourceFilterRequestType' + type: object GetRuleVersionHistoryData: description: Data for the rule version history. properties: @@ -29270,6 +29312,46 @@ components: required: - data type: object + ResourceFilterAttributes: + description: Attributes of a resource filter. + example: + aws: + '123456789': + - environment:production + - team:devops + azure: + sub-001: + - app:frontend + gcp: + project-abc: + - region:us-central1 + properties: + cloud_provider: + additionalProperties: + additionalProperties: + items: + description: Tag filter in format "key:value" + example: environment:production + type: string + type: array + type: object + description: A map of cloud provider names (e.g., "aws", "gcp", "azure") + to a map of account/resource IDs and their associated tag filters. + type: object + uuid: + description: The UUID of the resource filter. + type: string + required: + - cloud_provider + type: object + ResourceFilterRequestType: + description: Constant string to identify the resource type. + enum: + - csm_resource_filter + example: csm_resource_filter + type: string + x-enum-varnames: + - CSM_RESOURCE_FILTER ResponseMetaAttributes: description: Object describing meta attributes of response. properties: @@ -32253,9 +32335,11 @@ components: example: true type: boolean SecurityMonitoringRuleKeepAlive: - description: "Once a signal is generated, the signal will remain \u201Copen\u201D - if a case is matched at least once within\nthis keep alive window. For third - party detection method, this field is not used." + description: 'Once a signal is generated, the signal will remain "open" if a + case is matched at least once within + + this keep alive window. For third party detection method, this field is not + used.' enum: - 0 - 60 @@ -32285,9 +32369,10 @@ components: - TWELVE_HOURS - ONE_DAY SecurityMonitoringRuleMaxSignalDuration: - description: "A signal will \u201Cclose\u201D regardless of the query being - matched once the time exceeds the maximum duration.\nThis time is calculated - from the first seen timestamp." + description: 'A signal will "close" regardless of the query being matched once + the time exceeds the maximum duration. + + This time is calculated from the first seen timestamp.' enum: - 0 - 60 @@ -38688,6 +38773,52 @@ components: id: $ref: '#/components/schemas/ApiID' type: object + UpdateResourceEvaluationFiltersRequest: + description: Request object to update a resource filter. + properties: + data: + $ref: '#/components/schemas/UpdateResourceEvaluationFiltersRequestData' + required: + - data + type: object + UpdateResourceEvaluationFiltersRequestData: + description: The definition of `UpdateResourceFilterRequestData` object. + properties: + attributes: + $ref: '#/components/schemas/ResourceFilterAttributes' + id: + description: The `UpdateResourceEvaluationFiltersRequestData` `id`. + example: csm_resource_filter + type: string + type: + $ref: '#/components/schemas/ResourceFilterRequestType' + required: + - attributes + - type + type: object + UpdateResourceEvaluationFiltersResponse: + description: The definition of `UpdateResourceEvaluationFiltersResponse` object. + properties: + data: + $ref: '#/components/schemas/UpdateResourceEvaluationFiltersResponseData' + required: + - data + type: object + UpdateResourceEvaluationFiltersResponseData: + description: The definition of `UpdateResourceFilterResponseData` object. + properties: + attributes: + $ref: '#/components/schemas/ResourceFilterAttributes' + id: + description: The `data` `id`. + example: csm_resource_filter + type: string + type: + $ref: '#/components/schemas/ResourceFilterRequestType' + required: + - attributes + - type + type: object UpdateRuleRequest: description: Request to update a scorecard rule. properties: @@ -43624,6 +43755,74 @@ paths: permissions: - security_monitoring_rules_read - security_monitoring_rules_write + /api/v2/cloud_security_management/resource_filters: + get: + description: List resource filters. + operationId: GetResourceEvaluationFilters + parameters: + - $ref: '#/components/parameters/ResourceFilterProvider' + - $ref: '#/components/parameters/ResourceFilterAccountID' + - $ref: '#/components/parameters/SkipCache' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GetResourceEvaluationFiltersResponse' + description: OK + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_filters_read + summary: List resource filters + tags: + - Security Monitoring + x-permission: + operator: OR + permissions: + - security_monitoring_filters_read + put: + description: Update resource filters. + operationId: UpdateResourceEvaluationFilters + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateResourceEvaluationFiltersRequest' + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateResourceEvaluationFiltersResponse' + description: OK + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_filters_write + summary: Update resource filters + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - security_monitoring_filters_write /api/v2/container_images: get: description: Get all Container Images for your organization. diff --git a/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-Bad-Request-response_246392364/frozen.json b/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-Bad-Request-response_246392364/frozen.json new file mode 100644 index 000000000000..10498b7b440a --- /dev/null +++ b/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-Bad-Request-response_246392364/frozen.json @@ -0,0 +1 @@ +"2025-05-06T08:24:43.362Z" diff --git a/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-Bad-Request-response_246392364/recording.har b/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-Bad-Request-response_246392364/recording.har new file mode 100644 index 000000000000..3f38f5472117 --- /dev/null +++ b/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-Bad-Request-response_246392364/recording.har @@ -0,0 +1,62 @@ +{ + "log": { + "_recordingName": "Security Monitoring/List resource filters returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "08839a3d63fc9127123ffc356c178826", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 562, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "account_id", + "value": "123456789" + } + ], + "url": "https://api.datadoghq.com/api/v2/cloud_security_management/resource_filters?account_id=123456789" + }, + "response": { + "bodySize": 151, + "content": { + "mimeType": "application/vnd.api+json", + "size": 151, + "text": "{\"errors\":[{\"status\":\"400\",\"title\":\"Bad Request\",\"detail\":\"Field 'account_id' is invalid: account_id provided without specifying the cloud provider\"}]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/vnd.api+json" + } + ], + "headersSize": 675, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-05-06T08:24:43.777Z", + "time": 153 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-OK-response_173046866/frozen.json b/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-OK-response_173046866/frozen.json new file mode 100644 index 000000000000..91a10a5a4234 --- /dev/null +++ b/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-OK-response_173046866/frozen.json @@ -0,0 +1 @@ +"2025-05-06T10:03:18.837Z" diff --git a/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-OK-response_173046866/recording.har b/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-OK-response_173046866/recording.har new file mode 100644 index 000000000000..de53e7c031ce --- /dev/null +++ b/cassettes/v2/Security-Monitoring_1187227211/List-resource-filters-returns-OK-response_173046866/recording.har @@ -0,0 +1,66 @@ +{ + "log": { + "_recordingName": "Security Monitoring/List resource filters returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "000eff50ec68762bad7f1f9d22febfbf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 591, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "cloud_provider", + "value": "aws" + }, + { + "name": "account_id", + "value": "123456789" + } + ], + "url": "https://api.datadoghq.com/api/v2/cloud_security_management/resource_filters?cloud_provider=aws&account_id=123456789" + }, + "response": { + "bodySize": 118, + "content": { + "mimeType": "application/vnd.api+json", + "size": 118, + "text": "{\"data\":{\"id\":\"436195a0-5491-42a8-ac40-e0c0b61879bd\",\"type\":\"csm_resource_filter\",\"attributes\":{\"cloud_provider\":{}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/vnd.api+json" + } + ], + "headersSize": 675, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-05-06T10:03:19.296Z", + "time": 154 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-Bad-Request-response_2791151049/frozen.json b/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-Bad-Request-response_2791151049/frozen.json new file mode 100644 index 000000000000..f3ee977b0065 --- /dev/null +++ b/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-Bad-Request-response_2791151049/frozen.json @@ -0,0 +1 @@ +"2025-05-15T09:52:48.266Z" diff --git a/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-Bad-Request-response_2791151049/recording.har b/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-Bad-Request-response_2791151049/recording.har new file mode 100644 index 000000000000..e88103751e42 --- /dev/null +++ b/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-Bad-Request-response_2791151049/recording.har @@ -0,0 +1,67 @@ +{ + "log": { + "_recordingName": "Security Monitoring/Update resource filters returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "cce07500c6452924d6e90016839fe00e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 141, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 607, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"cloud_provider\":{\"invalid\":{\"aws_account_id\":[\"tag1:v1\"]}}},\"id\":\"csm_resource_filter\",\"type\":\"csm_resource_filter\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/cloud_security_management/resource_filters" + }, + "response": { + "bodySize": 93, + "content": { + "mimeType": "application/vnd.api+json", + "size": 93, + "text": "{\"errors\":[{\"status\":\"400\",\"title\":\"Bad Request\",\"detail\":\"Invalid cloud provider invalid\"}]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/vnd.api+json" + } + ], + "headersSize": 674, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-05-15T09:52:48.957Z", + "time": 332 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-OK-response_957598533/frozen.json b/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-OK-response_957598533/frozen.json new file mode 100644 index 000000000000..f7ac1cb14e2d --- /dev/null +++ b/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-OK-response_957598533/frozen.json @@ -0,0 +1 @@ +"2025-05-15T09:52:49.297Z" diff --git a/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-OK-response_957598533/recording.har b/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-OK-response_957598533/recording.har new file mode 100644 index 000000000000..9a9bef4a5d9e --- /dev/null +++ b/cassettes/v2/Security-Monitoring_1187227211/Update-resource-filters-returns-OK-response_957598533/recording.har @@ -0,0 +1,67 @@ +{ + "log": { + "_recordingName": "Security Monitoring/Update resource filters returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "6d030ff7efca38751ee2e8125e5bad83", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 137, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 607, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"cloud_provider\":{\"aws\":{\"aws_account_id\":[\"tag1:v1\"]}}},\"id\":\"csm_resource_filter\",\"type\":\"csm_resource_filter\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/cloud_security_management/resource_filters" + }, + "response": { + "bodySize": 183, + "content": { + "mimeType": "application/vnd.api+json", + "size": 183, + "text": "{\"data\":{\"id\":\"csm_resource_filter\",\"type\":\"csm_resource_filter\",\"attributes\":{\"cloud_provider\":{\"aws\":{\"aws_account_id\":[\"tag1:v1\"]}},\"uuid\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/vnd.api+json" + } + ], + "headersSize": 675, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-05-15T09:52:49.300Z", + "time": 349 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/examples/v2/security-monitoring/GetResourceEvaluationFilters.ts b/examples/v2/security-monitoring/GetResourceEvaluationFilters.ts new file mode 100644 index 000000000000..d8164dfe9d10 --- /dev/null +++ b/examples/v2/security-monitoring/GetResourceEvaluationFilters.ts @@ -0,0 +1,22 @@ +/** + * List resource filters returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +const apiInstance = new v2.SecurityMonitoringApi(configuration); + +const params: v2.SecurityMonitoringApiGetResourceEvaluationFiltersRequest = { + cloudProvider: "aws", + accountId: "123456789", +}; + +apiInstance + .getResourceEvaluationFilters(params) + .then((data: v2.GetResourceEvaluationFiltersResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/security-monitoring/UpdateResourceEvaluationFilters.ts b/examples/v2/security-monitoring/UpdateResourceEvaluationFilters.ts new file mode 100644 index 000000000000..acb612508e7c --- /dev/null +++ b/examples/v2/security-monitoring/UpdateResourceEvaluationFilters.ts @@ -0,0 +1,33 @@ +/** + * Update resource filters returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +const apiInstance = new v2.SecurityMonitoringApi(configuration); + +const params: v2.SecurityMonitoringApiUpdateResourceEvaluationFiltersRequest = { + body: { + data: { + attributes: { + cloudProvider: { + aws: { + aws_account_id: ["tag1:v1"], + }, + }, + }, + id: "csm_resource_filter", + type: "csm_resource_filter", + }, + }, +}; + +apiInstance + .updateResourceEvaluationFilters(params) + .then((data: v2.UpdateResourceEvaluationFiltersResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/features/support/scenarios_model_mapping.ts b/features/support/scenarios_model_mapping.ts index 121613317808..16913a18e738 100644 --- a/features/support/scenarios_model_mapping.ts +++ b/features/support/scenarios_model_mapping.ts @@ -3230,6 +3230,28 @@ export const ScenariosModelMappings: {[key: string]: {[key: string]: any}} = { }, "operationResponseType": "UpdateCustomFrameworkResponse", }, + "v2.GetResourceEvaluationFilters": { + "cloudProvider": { + "type": "string", + "format": "", + }, + "accountId": { + "type": "string", + "format": "", + }, + "skipCache": { + "type": "boolean", + "format": "", + }, + "operationResponseType": "GetResourceEvaluationFiltersResponse", + }, + "v2.UpdateResourceEvaluationFilters": { + "body": { + "type": "UpdateResourceEvaluationFiltersRequest", + "format": "", + }, + "operationResponseType": "UpdateResourceEvaluationFiltersResponse", + }, "v2.ListFindings": { "pageLimit": { "type": "number", diff --git a/features/v2/security_monitoring.feature b/features/v2/security_monitoring.feature index 0d71c0b6e18e..57200a3663e9 100644 --- a/features/v2/security_monitoring.feature +++ b/features/v2/security_monitoring.feature @@ -872,6 +872,21 @@ Feature: Security Monitoring When the request is sent Then the response status is 200 OK + @team:DataDog/k9-cloud-security-platform + Scenario: List resource filters returns "Bad Request" response + Given new "GetResourceEvaluationFilters" request + And request contains "account_id" parameter with value "123456789" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/k9-cloud-security-platform + Scenario: List resource filters returns "OK" response + Given new "GetResourceEvaluationFilters" request + And request contains "cloud_provider" parameter with value "aws" + And request contains "account_id" parameter with value "123456789" + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/k9-cloud-security-platform Scenario: List rules returns "Bad Request" response Given new "ListSecurityMonitoringRules" request @@ -1260,6 +1275,20 @@ Feature: Security Monitoring And the response "name" is equal to "{{ unique }}-Updated" And the response "id" has the same value as "security_rule.id" + @team:DataDog/k9-cloud-security-platform + Scenario: Update resource filters returns "Bad Request" response + Given new "UpdateResourceEvaluationFilters" request + And body with value {"data": {"attributes": {"cloud_provider": {"invalid": {"aws_account_id": ["tag1:v1"]}}}, "id": "csm_resource_filter", "type": "csm_resource_filter"}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/k9-cloud-security-platform + Scenario: Update resource filters returns "OK" response + Given new "UpdateResourceEvaluationFilters" request + And body with value {"data": {"attributes": {"cloud_provider": {"aws": {"aws_account_id": ["tag1:v1"]}}}, "id": "csm_resource_filter", "type": "csm_resource_filter"}} + When the request is sent + Then the response status is 201 OK + @skip-go @skip-java @skip-python @skip-ruby @skip-rust @skip-typescript @skip-validation @team:DataDog/k9-cloud-security-platform Scenario: Validate a detection rule returns "Bad Request" response Given new "ValidateSecurityMonitoringRule" request diff --git a/features/v2/undo.json b/features/v2/undo.json index b9ea72c1d00d..6f0ee3848a72 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -548,6 +548,18 @@ "type": "idempotent" } }, + "GetResourceEvaluationFilters": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, + "UpdateResourceEvaluationFilters": { + "tag": "Security Monitoring", + "undo": { + "type": "idempotent" + } + }, "ListContainerImages": { "tag": "Container Images", "undo": { diff --git a/packages/datadog-api-client-v2/apis/SecurityMonitoringApi.ts b/packages/datadog-api-client-v2/apis/SecurityMonitoringApi.ts index 3e49c065622f..3485cf5e1716 100644 --- a/packages/datadog-api-client-v2/apis/SecurityMonitoringApi.ts +++ b/packages/datadog-api-client-v2/apis/SecurityMonitoringApi.ts @@ -31,6 +31,7 @@ import { FindingStatus } from "../models/FindingStatus"; import { FindingVulnerabilityType } from "../models/FindingVulnerabilityType"; import { GetCustomFrameworkResponse } from "../models/GetCustomFrameworkResponse"; import { GetFindingResponse } from "../models/GetFindingResponse"; +import { GetResourceEvaluationFiltersResponse } from "../models/GetResourceEvaluationFiltersResponse"; import { GetRuleVersionHistoryResponse } from "../models/GetRuleVersionHistoryResponse"; import { GetSBOMResponse } from "../models/GetSBOMResponse"; import { HistoricalJobResponse } from "../models/HistoricalJobResponse"; @@ -72,6 +73,8 @@ import { SecurityMonitoringSuppressionsResponse } from "../models/SecurityMonito import { SecurityMonitoringSuppressionUpdateRequest } from "../models/SecurityMonitoringSuppressionUpdateRequest"; import { UpdateCustomFrameworkRequest } from "../models/UpdateCustomFrameworkRequest"; import { UpdateCustomFrameworkResponse } from "../models/UpdateCustomFrameworkResponse"; +import { UpdateResourceEvaluationFiltersRequest } from "../models/UpdateResourceEvaluationFiltersRequest"; +import { UpdateResourceEvaluationFiltersResponse } from "../models/UpdateResourceEvaluationFiltersResponse"; import { VulnerabilityEcosystem } from "../models/VulnerabilityEcosystem"; import { VulnerabilitySeverity } from "../models/VulnerabilitySeverity"; import { VulnerabilityStatus } from "../models/VulnerabilityStatus"; @@ -1083,6 +1086,57 @@ export class SecurityMonitoringApiRequestFactory extends BaseAPIRequestFactory { return requestContext; } + public async getResourceEvaluationFilters( + cloudProvider?: string, + accountId?: string, + skipCache?: boolean, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + // Path Params + const localVarPath = "/api/v2/cloud_security_management/resource_filters"; + + // Make Request Context + const requestContext = _config + .getServer("v2.SecurityMonitoringApi.getResourceEvaluationFilters") + .makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Query Params + if (cloudProvider !== undefined) { + requestContext.setQueryParam( + "cloud_provider", + ObjectSerializer.serialize(cloudProvider, "string", ""), + "" + ); + } + if (accountId !== undefined) { + requestContext.setQueryParam( + "account_id", + ObjectSerializer.serialize(accountId, "string", ""), + "" + ); + } + if (skipCache !== undefined) { + requestContext.setQueryParam( + "skip_cache", + ObjectSerializer.serialize(skipCache, "boolean", ""), + "" + ); + } + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "AuthZ", + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + public async getRuleVersionHistory( ruleId: string, pageSize?: number, @@ -2799,6 +2853,52 @@ export class SecurityMonitoringApiRequestFactory extends BaseAPIRequestFactory { return requestContext; } + public async updateResourceEvaluationFilters( + body: UpdateResourceEvaluationFiltersRequest, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError("body", "updateResourceEvaluationFilters"); + } + + // Path Params + const localVarPath = "/api/v2/cloud_security_management/resource_filters"; + + // Make Request Context + const requestContext = _config + .getServer("v2.SecurityMonitoringApi.updateResourceEvaluationFilters") + .makeRequestContext(localVarPath, HttpMethod.PUT); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Body Params + const contentType = ObjectSerializer.getPreferredMediaType([ + "application/json", + ]); + requestContext.setHeaderParam("Content-Type", contentType); + const serializedBody = ObjectSerializer.stringify( + ObjectSerializer.serialize( + body, + "UpdateResourceEvaluationFiltersRequest", + "" + ), + contentType + ); + requestContext.setBody(serializedBody); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "AuthZ", + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + public async updateSecurityFilter( securityFilterId: string, body: SecurityFilterUpdateRequest, @@ -4435,6 +4535,70 @@ export class SecurityMonitoringApiResponseProcessor { ); } + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to getResourceEvaluationFilters + * @throws ApiException if the response code was not in [200, 299] + */ + public async getResourceEvaluationFilters( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: GetResourceEvaluationFiltersResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "GetResourceEvaluationFiltersResponse" + ) as GetResourceEvaluationFiltersResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: GetResourceEvaluationFiltersResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "GetResourceEvaluationFiltersResponse", + "" + ) as GetResourceEvaluationFiltersResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -6168,6 +6332,70 @@ export class SecurityMonitoringApiResponseProcessor { ); } + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to updateResourceEvaluationFilters + * @throws ApiException if the response code was not in [200, 299] + */ + public async updateResourceEvaluationFilters( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 201) { + const body: UpdateResourceEvaluationFiltersResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "UpdateResourceEvaluationFiltersResponse" + ) as UpdateResourceEvaluationFiltersResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: UpdateResourceEvaluationFiltersResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "UpdateResourceEvaluationFiltersResponse", + "" + ) as UpdateResourceEvaluationFiltersResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + /** * Unwraps the actual response sent by the server from the response context and deserializes the response content * to the expected objects @@ -6633,6 +6861,24 @@ export interface SecurityMonitoringApiGetHistoricalJobRequest { jobId: string; } +export interface SecurityMonitoringApiGetResourceEvaluationFiltersRequest { + /** + * Filter resource filters by cloud provider (e.g. aws, gcp, azure). + * @type string + */ + cloudProvider?: string; + /** + * Filter resource filters by cloud provider account ID. This parameter is only valid when provider is specified. + * @type string + */ + accountId?: string; + /** + * Skip cache for resource filters. + * @type boolean + */ + skipCache?: boolean; +} + export interface SecurityMonitoringApiGetRuleVersionHistoryRequest { /** * The ID of the rule. @@ -7231,6 +7477,13 @@ export interface SecurityMonitoringApiUpdateCustomFrameworkRequest { body: UpdateCustomFrameworkRequest; } +export interface SecurityMonitoringApiUpdateResourceEvaluationFiltersRequest { + /** + * @type UpdateResourceEvaluationFiltersRequest + */ + body: UpdateResourceEvaluationFiltersRequest; +} + export interface SecurityMonitoringApiUpdateSecurityFilterRequest { /** * The ID of the security filter. @@ -7816,6 +8069,32 @@ export class SecurityMonitoringApi { }); } + /** + * List resource filters. + * @param param The request object + */ + public getResourceEvaluationFilters( + param: SecurityMonitoringApiGetResourceEvaluationFiltersRequest = {}, + options?: Configuration + ): Promise { + const requestContextPromise = + this.requestFactory.getResourceEvaluationFilters( + param.cloudProvider, + param.accountId, + param.skipCache, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.getResourceEvaluationFilters( + responseContext + ); + }); + }); + } + /** * Get a rule's version history. * @param param The request object @@ -8772,6 +9051,27 @@ export class SecurityMonitoringApi { }); } + /** + * Update resource filters. + * @param param The request object + */ + public updateResourceEvaluationFilters( + param: SecurityMonitoringApiUpdateResourceEvaluationFiltersRequest, + options?: Configuration + ): Promise { + const requestContextPromise = + this.requestFactory.updateResourceEvaluationFilters(param.body, options); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.updateResourceEvaluationFilters( + responseContext + ); + }); + }); + } + /** * Update a specific security filter. * Returns the security filter object when the request is successful. diff --git a/packages/datadog-api-client-v2/index.ts b/packages/datadog-api-client-v2/index.ts index 09531b52b2b2..d4f74f6a3774 100644 --- a/packages/datadog-api-client-v2/index.ts +++ b/packages/datadog-api-client-v2/index.ts @@ -561,6 +561,7 @@ export { SecurityMonitoringApiGetCustomFrameworkRequest, SecurityMonitoringApiGetFindingRequest, SecurityMonitoringApiGetHistoricalJobRequest, + SecurityMonitoringApiGetResourceEvaluationFiltersRequest, SecurityMonitoringApiGetRuleVersionHistoryRequest, SecurityMonitoringApiGetSBOMRequest, SecurityMonitoringApiGetSecurityFilterRequest, @@ -583,6 +584,7 @@ export { SecurityMonitoringApiTestExistingSecurityMonitoringRuleRequest, SecurityMonitoringApiTestSecurityMonitoringRuleRequest, SecurityMonitoringApiUpdateCustomFrameworkRequest, + SecurityMonitoringApiUpdateResourceEvaluationFiltersRequest, SecurityMonitoringApiUpdateSecurityFilterRequest, SecurityMonitoringApiUpdateSecurityMonitoringRuleRequest, SecurityMonitoringApiUpdateSecurityMonitoringSuppressionRequest, @@ -1639,6 +1641,8 @@ export { GetDeviceResponse } from "./models/GetDeviceResponse"; export { GetFindingResponse } from "./models/GetFindingResponse"; export { GetInterfacesData } from "./models/GetInterfacesData"; export { GetInterfacesResponse } from "./models/GetInterfacesResponse"; +export { GetResourceEvaluationFiltersResponse } from "./models/GetResourceEvaluationFiltersResponse"; +export { GetResourceEvaluationFiltersResponseData } from "./models/GetResourceEvaluationFiltersResponseData"; export { GetRuleVersionHistoryData } from "./models/GetRuleVersionHistoryData"; export { GetRuleVersionHistoryDataType } from "./models/GetRuleVersionHistoryDataType"; export { GetRuleVersionHistoryResponse } from "./models/GetRuleVersionHistoryResponse"; @@ -2476,6 +2480,8 @@ export { RelationshipToUserTeamUserData } from "./models/RelationshipToUserTeamU export { RelationType } from "./models/RelationType"; export { Remediation } from "./models/Remediation"; export { ReorderRetentionFiltersRequest } from "./models/ReorderRetentionFiltersRequest"; +export { ResourceFilterAttributes } from "./models/ResourceFilterAttributes"; +export { ResourceFilterRequestType } from "./models/ResourceFilterRequestType"; export { ResponseMetaAttributes } from "./models/ResponseMetaAttributes"; export { RestrictionPolicy } from "./models/RestrictionPolicy"; export { RestrictionPolicyAttributes } from "./models/RestrictionPolicyAttributes"; @@ -3108,6 +3114,10 @@ export { UpdateCustomFrameworkResponse } from "./models/UpdateCustomFrameworkRes export { UpdateOpenAPIResponse } from "./models/UpdateOpenAPIResponse"; export { UpdateOpenAPIResponseAttributes } from "./models/UpdateOpenAPIResponseAttributes"; export { UpdateOpenAPIResponseData } from "./models/UpdateOpenAPIResponseData"; +export { UpdateResourceEvaluationFiltersRequest } from "./models/UpdateResourceEvaluationFiltersRequest"; +export { UpdateResourceEvaluationFiltersRequestData } from "./models/UpdateResourceEvaluationFiltersRequestData"; +export { UpdateResourceEvaluationFiltersResponse } from "./models/UpdateResourceEvaluationFiltersResponse"; +export { UpdateResourceEvaluationFiltersResponseData } from "./models/UpdateResourceEvaluationFiltersResponseData"; export { UpdateRuleRequest } from "./models/UpdateRuleRequest"; export { UpdateRuleRequestData } from "./models/UpdateRuleRequestData"; export { UpdateRuleResponse } from "./models/UpdateRuleResponse"; diff --git a/packages/datadog-api-client-v2/models/GetResourceEvaluationFiltersResponse.ts b/packages/datadog-api-client-v2/models/GetResourceEvaluationFiltersResponse.ts new file mode 100644 index 000000000000..5fa64b396629 --- /dev/null +++ b/packages/datadog-api-client-v2/models/GetResourceEvaluationFiltersResponse.ts @@ -0,0 +1,54 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { GetResourceEvaluationFiltersResponseData } from "./GetResourceEvaluationFiltersResponseData"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * The definition of `GetResourceEvaluationFiltersResponse` object. + */ +export class GetResourceEvaluationFiltersResponse { + /** + * The definition of `GetResourceFilterResponseData` object. + */ + "data": GetResourceEvaluationFiltersResponseData; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "GetResourceEvaluationFiltersResponseData", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "any", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return GetResourceEvaluationFiltersResponse.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/GetResourceEvaluationFiltersResponseData.ts b/packages/datadog-api-client-v2/models/GetResourceEvaluationFiltersResponseData.ts new file mode 100644 index 000000000000..e20fffb57f94 --- /dev/null +++ b/packages/datadog-api-client-v2/models/GetResourceEvaluationFiltersResponseData.ts @@ -0,0 +1,70 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { ResourceFilterAttributes } from "./ResourceFilterAttributes"; +import { ResourceFilterRequestType } from "./ResourceFilterRequestType"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * The definition of `GetResourceFilterResponseData` object. + */ +export class GetResourceEvaluationFiltersResponseData { + /** + * Attributes of a resource filter. + */ + "attributes"?: ResourceFilterAttributes; + /** + * The `data` `id`. + */ + "id"?: string; + /** + * Constant string to identify the resource type. + */ + "type"?: ResourceFilterRequestType; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "ResourceFilterAttributes", + }, + id: { + baseName: "id", + type: "string", + }, + type: { + baseName: "type", + type: "ResourceFilterRequestType", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "any", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return GetResourceEvaluationFiltersResponseData.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/HistoricalJobOptions.ts b/packages/datadog-api-client-v2/models/HistoricalJobOptions.ts index b4f35991c954..744b9d6130e7 100644 --- a/packages/datadog-api-client-v2/models/HistoricalJobOptions.ts +++ b/packages/datadog-api-client-v2/models/HistoricalJobOptions.ts @@ -31,12 +31,12 @@ export class HistoricalJobOptions { */ "impossibleTravelOptions"?: SecurityMonitoringRuleImpossibleTravelOptions; /** - * Once a signal is generated, the signal will remain “open” if a case is matched at least once within + * Once a signal is generated, the signal will remain "open" if a case is matched at least once within * this keep alive window. For third party detection method, this field is not used. */ "keepAlive"?: SecurityMonitoringRuleKeepAlive; /** - * A signal will “close” regardless of the query being matched once the time exceeds the maximum duration. + * A signal will "close" regardless of the query being matched once the time exceeds the maximum duration. * This time is calculated from the first seen timestamp. */ "maxSignalDuration"?: SecurityMonitoringRuleMaxSignalDuration; diff --git a/packages/datadog-api-client-v2/models/ObjectSerializer.ts b/packages/datadog-api-client-v2/models/ObjectSerializer.ts index 066d8d82b8bb..4912b928f77a 100644 --- a/packages/datadog-api-client-v2/models/ObjectSerializer.ts +++ b/packages/datadog-api-client-v2/models/ObjectSerializer.ts @@ -707,6 +707,8 @@ import { GetDeviceResponse } from "./GetDeviceResponse"; import { GetFindingResponse } from "./GetFindingResponse"; import { GetInterfacesData } from "./GetInterfacesData"; import { GetInterfacesResponse } from "./GetInterfacesResponse"; +import { GetResourceEvaluationFiltersResponse } from "./GetResourceEvaluationFiltersResponse"; +import { GetResourceEvaluationFiltersResponseData } from "./GetResourceEvaluationFiltersResponseData"; import { GetRuleVersionHistoryData } from "./GetRuleVersionHistoryData"; import { GetRuleVersionHistoryResponse } from "./GetRuleVersionHistoryResponse"; import { GetSBOMResponse } from "./GetSBOMResponse"; @@ -1355,6 +1357,7 @@ import { RelationshipToUserTeamUserData } from "./RelationshipToUserTeamUserData import { RelationshipToUsers } from "./RelationshipToUsers"; import { Remediation } from "./Remediation"; import { ReorderRetentionFiltersRequest } from "./ReorderRetentionFiltersRequest"; +import { ResourceFilterAttributes } from "./ResourceFilterAttributes"; import { ResponseMetaAttributes } from "./ResponseMetaAttributes"; import { RestrictionPolicy } from "./RestrictionPolicy"; import { RestrictionPolicyAttributes } from "./RestrictionPolicyAttributes"; @@ -1797,6 +1800,10 @@ import { UpdateCustomFrameworkResponse } from "./UpdateCustomFrameworkResponse"; import { UpdateOpenAPIResponse } from "./UpdateOpenAPIResponse"; import { UpdateOpenAPIResponseAttributes } from "./UpdateOpenAPIResponseAttributes"; import { UpdateOpenAPIResponseData } from "./UpdateOpenAPIResponseData"; +import { UpdateResourceEvaluationFiltersRequest } from "./UpdateResourceEvaluationFiltersRequest"; +import { UpdateResourceEvaluationFiltersRequestData } from "./UpdateResourceEvaluationFiltersRequestData"; +import { UpdateResourceEvaluationFiltersResponse } from "./UpdateResourceEvaluationFiltersResponse"; +import { UpdateResourceEvaluationFiltersResponseData } from "./UpdateResourceEvaluationFiltersResponseData"; import { UpdateRuleRequest } from "./UpdateRuleRequest"; import { UpdateRuleRequestData } from "./UpdateRuleRequestData"; import { UpdateRuleResponse } from "./UpdateRuleResponse"; @@ -2687,6 +2694,7 @@ const enumsMap: { [key: string]: any[] } = { "RelationTypeImplementedBy", "RelationTypeImplements", ], + ResourceFilterRequestType: ["csm_resource_filter"], RestrictionPolicyType: ["restriction_policy"], RetentionFilterAllType: [ "spans-sampling-processor", @@ -3930,6 +3938,9 @@ const typeMap: { [index: string]: any } = { GetFindingResponse: GetFindingResponse, GetInterfacesData: GetInterfacesData, GetInterfacesResponse: GetInterfacesResponse, + GetResourceEvaluationFiltersResponse: GetResourceEvaluationFiltersResponse, + GetResourceEvaluationFiltersResponseData: + GetResourceEvaluationFiltersResponseData, GetRuleVersionHistoryData: GetRuleVersionHistoryData, GetRuleVersionHistoryResponse: GetRuleVersionHistoryResponse, GetSBOMResponse: GetSBOMResponse, @@ -4697,6 +4708,7 @@ const typeMap: { [index: string]: any } = { RelationshipToUsers: RelationshipToUsers, Remediation: Remediation, ReorderRetentionFiltersRequest: ReorderRetentionFiltersRequest, + ResourceFilterAttributes: ResourceFilterAttributes, ResponseMetaAttributes: ResponseMetaAttributes, RestrictionPolicy: RestrictionPolicy, RestrictionPolicyAttributes: RestrictionPolicyAttributes, @@ -5206,6 +5218,14 @@ const typeMap: { [index: string]: any } = { UpdateOpenAPIResponse: UpdateOpenAPIResponse, UpdateOpenAPIResponseAttributes: UpdateOpenAPIResponseAttributes, UpdateOpenAPIResponseData: UpdateOpenAPIResponseData, + UpdateResourceEvaluationFiltersRequest: + UpdateResourceEvaluationFiltersRequest, + UpdateResourceEvaluationFiltersRequestData: + UpdateResourceEvaluationFiltersRequestData, + UpdateResourceEvaluationFiltersResponse: + UpdateResourceEvaluationFiltersResponse, + UpdateResourceEvaluationFiltersResponseData: + UpdateResourceEvaluationFiltersResponseData, UpdateRuleRequest: UpdateRuleRequest, UpdateRuleRequestData: UpdateRuleRequestData, UpdateRuleResponse: UpdateRuleResponse, diff --git a/packages/datadog-api-client-v2/models/ResourceFilterAttributes.ts b/packages/datadog-api-client-v2/models/ResourceFilterAttributes.ts new file mode 100644 index 000000000000..8eec79417abc --- /dev/null +++ b/packages/datadog-api-client-v2/models/ResourceFilterAttributes.ts @@ -0,0 +1,61 @@ +/** + * 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 2020-Present Datadog, Inc. + */ + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Attributes of a resource filter. + */ +export class ResourceFilterAttributes { + /** + * A map of cloud provider names (e.g., "aws", "gcp", "azure") to a map of account/resource IDs and their associated tag filters. + */ + "cloudProvider": { [key: string]: { [key: string]: Array } }; + /** + * The UUID of the resource filter. + */ + "uuid"?: string; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + cloudProvider: { + baseName: "cloud_provider", + type: "{ [key: string]: { [key: string]: Array; }; }", + required: true, + }, + uuid: { + baseName: "uuid", + type: "string", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "any", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ResourceFilterAttributes.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/ResourceFilterRequestType.ts b/packages/datadog-api-client-v2/models/ResourceFilterRequestType.ts new file mode 100644 index 000000000000..304a7c461e1a --- /dev/null +++ b/packages/datadog-api-client-v2/models/ResourceFilterRequestType.ts @@ -0,0 +1,16 @@ +/** + * 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 2020-Present Datadog, Inc. + */ + +import { UnparsedObject } from "../../datadog-api-client-common/util"; + +/** + * Constant string to identify the resource type. + */ + +export type ResourceFilterRequestType = + | typeof CSM_RESOURCE_FILTER + | UnparsedObject; +export const CSM_RESOURCE_FILTER = "csm_resource_filter"; diff --git a/packages/datadog-api-client-v2/models/SecurityMonitoringRuleKeepAlive.ts b/packages/datadog-api-client-v2/models/SecurityMonitoringRuleKeepAlive.ts index fda9116a1371..9b0b06a713a6 100644 --- a/packages/datadog-api-client-v2/models/SecurityMonitoringRuleKeepAlive.ts +++ b/packages/datadog-api-client-v2/models/SecurityMonitoringRuleKeepAlive.ts @@ -7,7 +7,7 @@ import { UnparsedObject } from "../../datadog-api-client-common/util"; /** - * Once a signal is generated, the signal will remain “open” if a case is matched at least once within + * Once a signal is generated, the signal will remain "open" if a case is matched at least once within * this keep alive window. For third party detection method, this field is not used. */ diff --git a/packages/datadog-api-client-v2/models/SecurityMonitoringRuleMaxSignalDuration.ts b/packages/datadog-api-client-v2/models/SecurityMonitoringRuleMaxSignalDuration.ts index 0bc6f6676969..2691a6d84b5f 100644 --- a/packages/datadog-api-client-v2/models/SecurityMonitoringRuleMaxSignalDuration.ts +++ b/packages/datadog-api-client-v2/models/SecurityMonitoringRuleMaxSignalDuration.ts @@ -7,7 +7,7 @@ import { UnparsedObject } from "../../datadog-api-client-common/util"; /** - * A signal will “close” regardless of the query being matched once the time exceeds the maximum duration. + * A signal will "close" regardless of the query being matched once the time exceeds the maximum duration. * This time is calculated from the first seen timestamp. */ diff --git a/packages/datadog-api-client-v2/models/SecurityMonitoringRuleOptions.ts b/packages/datadog-api-client-v2/models/SecurityMonitoringRuleOptions.ts index 63f81a6bc8df..6e75d7059fd2 100644 --- a/packages/datadog-api-client-v2/models/SecurityMonitoringRuleOptions.ts +++ b/packages/datadog-api-client-v2/models/SecurityMonitoringRuleOptions.ts @@ -48,12 +48,12 @@ export class SecurityMonitoringRuleOptions { */ "impossibleTravelOptions"?: SecurityMonitoringRuleImpossibleTravelOptions; /** - * Once a signal is generated, the signal will remain “open” if a case is matched at least once within + * Once a signal is generated, the signal will remain "open" if a case is matched at least once within * this keep alive window. For third party detection method, this field is not used. */ "keepAlive"?: SecurityMonitoringRuleKeepAlive; /** - * A signal will “close” regardless of the query being matched once the time exceeds the maximum duration. + * A signal will "close" regardless of the query being matched once the time exceeds the maximum duration. * This time is calculated from the first seen timestamp. */ "maxSignalDuration"?: SecurityMonitoringRuleMaxSignalDuration; diff --git a/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersRequest.ts b/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersRequest.ts new file mode 100644 index 000000000000..36cda022eb77 --- /dev/null +++ b/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersRequest.ts @@ -0,0 +1,54 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { UpdateResourceEvaluationFiltersRequestData } from "./UpdateResourceEvaluationFiltersRequestData"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Request object to update a resource filter. + */ +export class UpdateResourceEvaluationFiltersRequest { + /** + * The definition of `UpdateResourceFilterRequestData` object. + */ + "data": UpdateResourceEvaluationFiltersRequestData; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "UpdateResourceEvaluationFiltersRequestData", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "any", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return UpdateResourceEvaluationFiltersRequest.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersRequestData.ts b/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersRequestData.ts new file mode 100644 index 000000000000..6156cf843432 --- /dev/null +++ b/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersRequestData.ts @@ -0,0 +1,72 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { ResourceFilterAttributes } from "./ResourceFilterAttributes"; +import { ResourceFilterRequestType } from "./ResourceFilterRequestType"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * The definition of `UpdateResourceFilterRequestData` object. + */ +export class UpdateResourceEvaluationFiltersRequestData { + /** + * Attributes of a resource filter. + */ + "attributes": ResourceFilterAttributes; + /** + * The `UpdateResourceEvaluationFiltersRequestData` `id`. + */ + "id"?: string; + /** + * Constant string to identify the resource type. + */ + "type": ResourceFilterRequestType; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "ResourceFilterAttributes", + required: true, + }, + id: { + baseName: "id", + type: "string", + }, + type: { + baseName: "type", + type: "ResourceFilterRequestType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "any", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return UpdateResourceEvaluationFiltersRequestData.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersResponse.ts b/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersResponse.ts new file mode 100644 index 000000000000..12322cb10172 --- /dev/null +++ b/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersResponse.ts @@ -0,0 +1,54 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { UpdateResourceEvaluationFiltersResponseData } from "./UpdateResourceEvaluationFiltersResponseData"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * The definition of `UpdateResourceEvaluationFiltersResponse` object. + */ +export class UpdateResourceEvaluationFiltersResponse { + /** + * The definition of `UpdateResourceFilterResponseData` object. + */ + "data": UpdateResourceEvaluationFiltersResponseData; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "UpdateResourceEvaluationFiltersResponseData", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "any", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return UpdateResourceEvaluationFiltersResponse.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersResponseData.ts b/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersResponseData.ts new file mode 100644 index 000000000000..93faf450eaa5 --- /dev/null +++ b/packages/datadog-api-client-v2/models/UpdateResourceEvaluationFiltersResponseData.ts @@ -0,0 +1,72 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { ResourceFilterAttributes } from "./ResourceFilterAttributes"; +import { ResourceFilterRequestType } from "./ResourceFilterRequestType"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * The definition of `UpdateResourceFilterResponseData` object. + */ +export class UpdateResourceEvaluationFiltersResponseData { + /** + * Attributes of a resource filter. + */ + "attributes": ResourceFilterAttributes; + /** + * The `data` `id`. + */ + "id"?: string; + /** + * Constant string to identify the resource type. + */ + "type": ResourceFilterRequestType; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "ResourceFilterAttributes", + required: true, + }, + id: { + baseName: "id", + type: "string", + }, + type: { + baseName: "type", + type: "ResourceFilterRequestType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "any", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return UpdateResourceEvaluationFiltersResponseData.attributeTypeMap; + } + + public constructor() {} +}