From 16032619c4f989faf33d834b9fa15e0df66fb32d Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 20 Jan 2026 15:23:35 +0000 Subject: [PATCH] Regenerate client from commit 86eacdc of spec repo --- .generator/schemas/v2/openapi.yaml | 628 ++++-------- ...curityMonitoringSuppressions_1315707136.rs | 25 + ...curityMonitoringSuppressions_1741429096.rs | 25 + ...curityMonitoringSuppressions_3985905558.rs | 25 + ...ring_PreviewSecurityMonitoringRuleQuery.rs | 28 + .../v2_synthetics_CreateSyntheticsSuite.rs | 32 - .../v2_synthetics_DeleteSyntheticsSuites.rs | 25 - examples/v2_synthetics_EditSyntheticsSuite.rs | 37 - examples/v2_synthetics_GetSyntheticsSuite.rs | 15 - examples/v2_synthetics_SearchSuites.rs | 18 - src/datadogV2/api/api_security_monitoring.rs | 215 ++++- src/datadogV2/api/api_synthetics.rs | 890 +----------------- src/datadogV2/model/mod.rs | 62 +- .../model_deleted_suite_response_data.rs | 149 --- .../model_deleted_suites_request_delete.rs | 134 --- ...eleted_suites_request_delete_attributes.rs | 107 --- ...l_deleted_suites_request_delete_request.rs | 92 -- .../model_deleted_suites_request_type.rs | 48 - ...toring_paginated_suppressions_response.rs} | 55 +- ...curity_monitoring_rule_livetail_request.rs | 220 +++++ ...rity_monitoring_rule_livetail_response.rs} | 45 +- ...el_security_monitoring_suppression_sort.rs | 75 ++ ..._security_monitoring_suppressions_meta.rs} | 49 +- ...rity_monitoring_suppressions_page_meta.rs} | 82 +- .../model/model_suite_create_edit.rs | 112 --- .../model/model_suite_create_edit_request.rs | 90 -- .../model/model_suite_search_response_type.rs | 48 - src/datadogV2/model/model_synthetics_suite.rs | 202 ---- .../model/model_synthetics_suite_response.rs | 105 --- .../model_synthetics_suite_response_data.rs | 147 --- ...l_synthetics_suite_search_response_data.rs | 150 --- ...s_suite_search_response_data_attributes.rs | 120 --- .../model/model_synthetics_suite_test.rs | 123 --- ...thetics_suite_test_alerting_criticality.rs | 51 - .../model/model_synthetics_suite_type.rs | 48 - .../model/model_synthetics_suite_types.rs | 48 - ...uppression-rule-returns-OK-response.frozen | 2 +- ...-suppression-rule-returns-OK-response.json | 16 +- ...uppression-rule-returns-OK-response.frozen | 2 +- ...-suppression-rule-returns-OK-response.json | 16 +- ...version-history-returns-OK-response.frozen | 2 +- ...s-version-history-returns-OK-response.json | 16 +- ...returns-OK-response-with-pagination.frozen | 1 + ...s-returns-OK-response-with-pagination.json | 149 +++ ...rns-OK-response-with-sort-ascending.frozen | 1 + ...turns-OK-response-with-sort-ascending.json | 149 +++ ...ns-OK-response-with-sort-descending.frozen | 1 + ...urns-OK-response-with-sort-descending.json | 149 +++ ...applied-filters-returns-OK-response.frozen | 1 + ...h-applied-filters-returns-OK-response.json | 39 + ...uppression-rule-returns-OK-response.frozen | 2 +- ...-suppression-rule-returns-OK-response.json | 16 +- ...nthetics-suites-returns-OK-response.frozen | 1 - ...Synthetics-suites-returns-OK-response.json | 33 - ...te-a-test-suite-returns-OK-response.frozen | 1 - ...eate-a-test-suite-returns-OK-response.json | 73 -- tests/scenarios/features/v2/given.json | 14 +- .../features/v2/security_monitoring.feature | 48 + .../scenarios/features/v2/synthetics.feature | 70 -- tests/scenarios/features/v2/undo.json | 43 +- tests/scenarios/function_mappings.rs | 211 +---- 61 files changed, 1627 insertions(+), 3754 deletions(-) create mode 100644 examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_1315707136.rs create mode 100644 examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_1741429096.rs create mode 100644 examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_3985905558.rs create mode 100644 examples/v2_security-monitoring_PreviewSecurityMonitoringRuleQuery.rs delete mode 100644 examples/v2_synthetics_CreateSyntheticsSuite.rs delete mode 100644 examples/v2_synthetics_DeleteSyntheticsSuites.rs delete mode 100644 examples/v2_synthetics_EditSyntheticsSuite.rs delete mode 100644 examples/v2_synthetics_GetSyntheticsSuite.rs delete mode 100644 examples/v2_synthetics_SearchSuites.rs delete mode 100644 src/datadogV2/model/model_deleted_suite_response_data.rs delete mode 100644 src/datadogV2/model/model_deleted_suites_request_delete.rs delete mode 100644 src/datadogV2/model/model_deleted_suites_request_delete_attributes.rs delete mode 100644 src/datadogV2/model/model_deleted_suites_request_delete_request.rs delete mode 100644 src/datadogV2/model/model_deleted_suites_request_type.rs rename src/datadogV2/model/{model_deleted_suites_response.rs => model_security_monitoring_paginated_suppressions_response.rs} (57%) create mode 100644 src/datadogV2/model/model_security_monitoring_rule_livetail_request.rs rename src/datadogV2/model/{model_synthetics_suite_options.rs => model_security_monitoring_rule_livetail_response.rs} (66%) create mode 100644 src/datadogV2/model/model_security_monitoring_suppression_sort.rs rename src/datadogV2/model/{model_synthetics_suite_search_response.rs => model_security_monitoring_suppressions_meta.rs} (65%) rename src/datadogV2/model/{model_deleted_suite_response_data_attributes.rs => model_security_monitoring_suppressions_page_meta.rs} (53%) delete mode 100644 src/datadogV2/model/model_suite_create_edit.rs delete mode 100644 src/datadogV2/model/model_suite_create_edit_request.rs delete mode 100644 src/datadogV2/model/model_suite_search_response_type.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite_response.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite_response_data.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite_search_response_data.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite_search_response_data_attributes.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite_test.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite_test_alerting_criticality.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite_type.rs delete mode 100644 src/datadogV2/model/model_synthetics_suite_types.rs create mode 100644 tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-pagination.frozen create mode 100644 tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-pagination.json create mode 100644 tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-ascending.frozen create mode 100644 tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-ascending.json create mode 100644 tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-descending.frozen create mode 100644 tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-descending.json create mode 100644 tests/scenarios/cassettes/v2/security_monitoring/Preview-a-rule-query-with-applied-filters-returns-OK-response.frozen create mode 100644 tests/scenarios/cassettes/v2/security_monitoring/Preview-a-rule-query-with-applied-filters-returns-OK-response.json delete mode 100644 tests/scenarios/cassettes/v2/synthetics/Search-Synthetics-suites-returns-OK-response.frozen delete mode 100644 tests/scenarios/cassettes/v2/synthetics/Search-Synthetics-suites-returns-OK-response.json delete mode 100644 tests/scenarios/cassettes/v2/synthetics/Synthetics-Create-a-test-suite-returns-OK-response.frozen delete mode 100644 tests/scenarios/cassettes/v2/synthetics/Synthetics-Create-a-test-suite-returns-OK-response.json diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index d649e7294..ed313d3aa 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -17446,70 +17446,6 @@ components: required: - data type: object - DeletedSuiteResponseData: - properties: - attributes: - $ref: '#/components/schemas/DeletedSuiteResponseDataAttributes' - id: - type: string - type: - $ref: '#/components/schemas/SyntheticsSuiteTypes' - type: object - DeletedSuiteResponseDataAttributes: - properties: - deleted_at: - description: Deletion timestamp of the Synthetic suite ID. - type: string - public_id: - description: The Synthetic suite ID deleted. - type: string - type: object - DeletedSuitesRequestDelete: - properties: - attributes: - $ref: '#/components/schemas/DeletedSuitesRequestDeleteAttributes' - id: - type: string - type: - $ref: '#/components/schemas/DeletedSuitesRequestType' - required: - - attributes - type: object - DeletedSuitesRequestDeleteAttributes: - properties: - force_delete_dependencies: - type: boolean - public_ids: - example: - - '' - items: - type: string - type: array - required: - - public_ids - type: object - DeletedSuitesRequestDeleteRequest: - properties: - data: - $ref: '#/components/schemas/DeletedSuitesRequestDelete' - required: - - data - type: object - DeletedSuitesRequestType: - default: delete_suites_request - enum: - - delete_suites_request - example: delete_suites_request - type: string - x-enum-varnames: - - DELETE_SUITES_REQUEST - DeletedSuitesResponse: - properties: - data: - items: - $ref: '#/components/schemas/DeletedSuiteResponseData' - type: array - type: object DependencyLocation: description: Static library vulnerability location. properties: @@ -49570,6 +49506,18 @@ components: meta: $ref: '#/components/schemas/ResponseMetaAttributes' type: object + SecurityMonitoringPaginatedSuppressionsResponse: + description: Response object containing the available suppression rules with + pagination metadata. + properties: + data: + description: A list of suppressions objects. + items: + $ref: '#/components/schemas/SecurityMonitoringSuppression' + type: array + meta: + $ref: '#/components/schemas/SecurityMonitoringSuppressionsMeta' + type: object SecurityMonitoringReferenceTable: description: Reference tables used in the queries. properties: @@ -49820,6 +49768,7 @@ components: - third_party - anomaly_threshold - sequence_detection + example: threshold type: string x-enum-varnames: - THRESHOLD @@ -49919,6 +49868,58 @@ components: - SIX_HOURS - TWELVE_HOURS - ONE_DAY + SecurityMonitoringRuleLivetailRequest: + description: Request to preview a rule query with applied filters. + properties: + dataSource: + description: Data source for the query. + example: logs + type: string + detectionMethod: + $ref: '#/components/schemas/SecurityMonitoringRuleDetectionMethod' + distinctFields: + description: Fields to apply distinct on. + items: + type: string + type: array + filters: + description: Additional security filters to apply. + items: + $ref: '#/components/schemas/SecurityMonitoringFilter' + type: array + groupByFields: + description: Fields to group by. + items: + type: string + type: array + query: + description: The query to preview. + example: source:java + type: string + queryIndex: + description: Index of the query in the rule. + example: 0 + format: int32 + maximum: 9 + minimum: 0 + type: integer + type: + $ref: '#/components/schemas/SecurityMonitoringRuleTypeRead' + required: + - query + - queryIndex + - type + - detectionMethod + - dataSource + type: object + SecurityMonitoringRuleLivetailResponse: + description: Response containing the modified query with applied filters. + properties: + query: + description: The modified query with all filters applied. + example: source:java (service:payment OR service:auth) + type: string + type: object SecurityMonitoringRuleMaxSignalDuration: description: 'A signal will "close" regardless of the query being matched once the time exceeds the maximum duration. @@ -50264,6 +50265,7 @@ components: - cloud_configuration - application_security - api_security + example: log_detection type: string x-enum-varnames: - LOG_DETECTION @@ -51719,6 +51721,31 @@ components: data: $ref: '#/components/schemas/SecurityMonitoringSuppression' type: object + SecurityMonitoringSuppressionSort: + description: The sort parameters used for querying suppression rules. + enum: + - name + - start_date + - expiration_date + - update_date + - enabled + - -name + - -start_date + - -expiration_date + - -update_date + - -enabled + type: string + x-enum-varnames: + - NAME + - START_DATE + - EXPIRATION_DATE + - UPDATE_DATE + - ENABLED + - NAME_DESCENDING + - START_DATE_DESCENDING + - EXPIRATION_DATE_DESCENDING + - UPDATE_DATE_DESCENDING + - ENABLED_DESCENDING SecurityMonitoringSuppressionType: default: suppressions description: The type of the resource. The value should always be `suppressions`. @@ -51814,6 +51841,31 @@ components: required: - data type: object + SecurityMonitoringSuppressionsMeta: + description: Metadata for the suppression list response. + properties: + page: + $ref: '#/components/schemas/SecurityMonitoringSuppressionsPageMeta' + type: object + SecurityMonitoringSuppressionsPageMeta: + description: Pagination metadata. + properties: + pageNumber: + description: Current page number. + example: 0 + format: int64 + type: integer + pageSize: + description: Current page size. + example: 2 + format: int64 + type: integer + totalCount: + description: Total count of suppressions. + example: 2 + format: int64 + type: integer + type: object SecurityMonitoringSuppressionsResponse: description: Response object containing the available suppression rules. properties: @@ -55497,31 +55549,6 @@ components: format: double type: number type: object - SuiteCreateEdit: - properties: - attributes: - $ref: '#/components/schemas/SyntheticsSuite' - type: - $ref: '#/components/schemas/SyntheticsSuiteTypes' - required: - - attributes - - type - type: object - SuiteCreateEditRequest: - properties: - data: - $ref: '#/components/schemas/SuiteCreateEdit' - required: - - data - type: object - SuiteSearchResponseType: - default: suites_search - enum: - - suites_search - example: suites_search - type: string - x-enum-varnames: - - SUITES_SEARCH SuppressionVersionHistory: description: Response object containing the version history of a suppression. properties: @@ -55705,149 +55732,6 @@ components: example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx type: string type: array - SyntheticsSuite: - description: Object containing details about a Synthetic suite. - properties: - message: - description: Notification message associated with the suite. - example: Notification message - type: string - monitor_id: - description: The associated monitor ID. - example: 12345678 - format: int64 - readOnly: true - type: integer - name: - description: Name of the suite. - example: Example suite name - type: string - options: - $ref: '#/components/schemas/SyntheticsSuiteOptions' - public_id: - description: The public ID for the test. - example: 123-abc-456 - readOnly: true - type: string - tags: - description: Array of tags attached to the suite. - example: - - env:production - items: - description: A tag attached to the suite. - type: string - type: array - tests: - items: - $ref: '#/components/schemas/SyntheticsSuiteTest' - type: array - type: - $ref: '#/components/schemas/SyntheticsSuiteType' - required: - - name - - type - - tests - - options - type: object - SyntheticsSuiteOptions: - description: Object describing the extra options for a Synthetic suite. - properties: - alerting_threshold: - description: Percentage of critical tests failure needed for a suite to - fail. - format: double - maximum: 1 - minimum: 0 - type: number - type: object - SyntheticsSuiteResponse: - description: Synthetics suite response - properties: - data: - $ref: '#/components/schemas/SyntheticsSuiteResponseData' - type: object - SyntheticsSuiteResponseData: - description: Synthetics suite response data - properties: - attributes: - $ref: '#/components/schemas/SyntheticsSuite' - id: - description: The public ID for the suite. - example: 123-abc-456 - readOnly: true - type: string - type: - $ref: '#/components/schemas/SyntheticsSuiteTypes' - type: object - SyntheticsSuiteSearchResponse: - description: Synthetics suite search response - properties: - data: - $ref: '#/components/schemas/SyntheticsSuiteSearchResponseData' - type: object - SyntheticsSuiteSearchResponseData: - description: Synthetics suite search response data - properties: - attributes: - $ref: '#/components/schemas/SyntheticsSuiteSearchResponseDataAttributes' - id: - format: uuid - type: string - type: - $ref: '#/components/schemas/SuiteSearchResponseType' - type: object - SyntheticsSuiteSearchResponseDataAttributes: - description: Synthetics suite search response data attributes - properties: - suites: - items: - $ref: '#/components/schemas/SyntheticsSuite' - type: array - total: - format: int32 - maximum: 2147483647 - type: integer - type: object - SyntheticsSuiteTest: - description: Object containing details about a Synthetic test included in a - Synthetic suite. - properties: - alerting_criticality: - $ref: '#/components/schemas/SyntheticsSuiteTestAlertingCriticality' - public_id: - example: '' - type: string - required: - - public_id - type: object - SyntheticsSuiteTestAlertingCriticality: - description: Alerting criticality for each the test. - enum: - - ignore - - critical - example: critical - type: string - x-enum-varnames: - - IGNORE - - CRITICAL - SyntheticsSuiteType: - default: suite - description: Type of the Synthetic suite, `suite`. - enum: - - suite - example: suite - type: string - x-enum-varnames: - - SUITE - SyntheticsSuiteTypes: - default: suites - description: Type for the Synthetics suites responses, `suites`. - enum: - - suites - example: suites - type: string - x-enum-varnames: - - SUITES SyntheticsVariableParser: description: Details of the parser to use for the global variable. example: @@ -86359,12 +86243,29 @@ paths: required: false schema: type: string + - description: Attribute used to sort the list of suppression rules. Prefix + with `-` to sort in descending order. + in: query + name: sort + required: false + schema: + $ref: '#/components/schemas/SecurityMonitoringSuppressionSort' + - description: Size for a given page. Use `-1` to return all items. + in: query + name: page[size] + required: false + schema: + default: -1 + example: 10 + format: int64 + type: integer + - $ref: '#/components/parameters/PageNumber' responses: '200': content: application/json: schema: - $ref: '#/components/schemas/SecurityMonitoringSuppressionsResponse' + $ref: '#/components/schemas/SecurityMonitoringPaginatedSuppressionsResponse' description: OK '403': $ref: '#/components/responses/NotAuthorizedResponse' @@ -86618,6 +86519,46 @@ paths: summary: Get a suppression's version history tags: - Security Monitoring + /api/v2/security_monitoring/livetail: + post: + description: 'Preview a security monitoring rule query with security filters, + group by fields, and distinct fields applied. + + This endpoint is used in the rule editor to show how the query will be transformed + after applying additional filters.' + operationId: PreviewSecurityMonitoringRuleQuery + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringRuleLivetailRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityMonitoringRuleLivetailResponse' + description: OK + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_rules_read + summary: Preview a rule query with applied filters + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - security_monitoring_rules_read /api/v2/security_monitoring/rules: get: description: List rules. @@ -89328,227 +89269,6 @@ paths: operator: OR permissions: - billing_edit - /api/v2/synthetics/suites: - post: - operationId: CreateSyntheticsSuite - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/SuiteCreateEditRequest' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/SyntheticsSuiteResponse' - description: OK - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/APIErrorResponse' - description: API error response. - '429': - $ref: '#/components/responses/TooManyRequestsResponse' - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - synthetics_write - summary: 'Synthetics: Create a test suite' - tags: - - Synthetics - x-permission: - operator: OR - permissions: - - synthetics_write - - synthetics_create_edit_trigger - /api/v2/synthetics/suites/bulk-delete: - post: - operationId: DeleteSyntheticsSuites - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DeletedSuitesRequestDeleteRequest' - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/DeletedSuitesResponse' - description: OK - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/APIErrorResponse' - description: API error response. - '429': - $ref: '#/components/responses/TooManyRequestsResponse' - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - synthetics_write - summary: 'Synthetics: Bulk delete suites' - tags: - - Synthetics - x-permission: - operator: OR - permissions: - - synthetics_write - /api/v2/synthetics/suites/search: - get: - description: Search for Synthetics suites. - operationId: SearchSuites - parameters: - - description: The search query. - in: query - name: query - required: false - schema: - type: string - - description: The sort order for the results (e.g., `name,asc` or `name,desc`). - in: query - name: sort - required: false - schema: - default: name,asc - type: string - - description: If true, return only facets instead of full test details. - in: query - name: facets_only - required: false - schema: - default: false - type: boolean - - description: The offset from which to start returning results. - in: query - name: start - required: false - schema: - default: 0 - format: int64 - type: integer - - description: The maximum number of results to return. - in: query - name: count - required: false - schema: - default: 50 - format: int64 - type: integer - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/SyntheticsSuiteSearchResponse' - description: OK - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/APIErrorResponse' - description: API error response. - '429': - $ref: '#/components/responses/TooManyRequestsResponse' - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - synthetics_read - summary: Search Synthetics suites - tags: - - Synthetics - x-permission: - operator: OR - permissions: - - synthetics_read - /api/v2/synthetics/suites/{public_id}: - get: - operationId: GetSyntheticsSuite - parameters: - - description: The public ID of the suite to get details from. - in: path - name: public_id - required: true - schema: - type: string - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/SyntheticsSuiteResponse' - description: OK - '404': - content: - application/json: - schema: - $ref: '#/components/schemas/APIErrorResponse' - description: API error response. - '429': - $ref: '#/components/responses/TooManyRequestsResponse' - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - synthetics_read - summary: 'Synthetics: Get a suite' - tags: - - Synthetics - x-permission: - operator: OR - permissions: - - synthetics_read - put: - operationId: EditSyntheticsSuite - parameters: - - description: The public ID of the suite to edit. - in: path - name: public_id - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/SuiteCreateEditRequest' - description: New suite details to be saved. - required: true - responses: - '200': - content: - application/json: - schema: - $ref: '#/components/schemas/SyntheticsSuiteResponse' - description: OK - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/APIErrorResponse' - description: API error response. - '429': - $ref: '#/components/responses/TooManyRequestsResponse' - security: - - apiKeyAuth: [] - appKeyAuth: [] - - AuthZ: - - synthetics_write - summary: 'Synthetics: Edit a test suite' - tags: - - Synthetics - x-permission: - operator: OR - permissions: - - synthetics_write /api/v2/synthetics/variables/{variable_id}/jsonpatch: patch: description: 'Patch a global variable using JSON Patch (RFC 6902). diff --git a/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_1315707136.rs b/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_1315707136.rs new file mode 100644 index 000000000..e074c0bc6 --- /dev/null +++ b/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_1315707136.rs @@ -0,0 +1,25 @@ +// Get all suppression rules returns "OK" response with sort ascending +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_security_monitoring::ListSecurityMonitoringSuppressionsOptionalParams; +use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI; +use datadog_api_client::datadogV2::model::SecurityMonitoringSuppressionSort; + +#[tokio::main] +async fn main() { + // there is a valid "suppression" in the system there is a valid "suppression2" in + // the system + let configuration = datadog::Configuration::new(); + let api = SecurityMonitoringAPI::with_config(configuration); + let resp = api + .list_security_monitoring_suppressions( + ListSecurityMonitoringSuppressionsOptionalParams::default() + .sort(SecurityMonitoringSuppressionSort::NAME) + .query("id:3dd-0uc-h1s OR id:886e6c3e-e543-049c-ee1b-56a1110295c0".to_string()), + ) + .await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_1741429096.rs b/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_1741429096.rs new file mode 100644 index 000000000..754201641 --- /dev/null +++ b/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_1741429096.rs @@ -0,0 +1,25 @@ +// Get all suppression rules returns "OK" response with sort descending +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_security_monitoring::ListSecurityMonitoringSuppressionsOptionalParams; +use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI; +use datadog_api_client::datadogV2::model::SecurityMonitoringSuppressionSort; + +#[tokio::main] +async fn main() { + // there is a valid "suppression" in the system there is a valid "suppression2" in + // the system + let configuration = datadog::Configuration::new(); + let api = SecurityMonitoringAPI::with_config(configuration); + let resp = api + .list_security_monitoring_suppressions( + ListSecurityMonitoringSuppressionsOptionalParams::default() + .sort(SecurityMonitoringSuppressionSort::NAME_DESCENDING) + .query("id:3dd-0uc-h1s OR id:886e6c3e-e543-049c-ee1b-56a1110295c0".to_string()), + ) + .await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_3985905558.rs b/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_3985905558.rs new file mode 100644 index 000000000..7c4220b65 --- /dev/null +++ b/examples/v2_security-monitoring_ListSecurityMonitoringSuppressions_3985905558.rs @@ -0,0 +1,25 @@ +// Get all suppression rules returns "OK" response with pagination +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_security_monitoring::ListSecurityMonitoringSuppressionsOptionalParams; +use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI; + +#[tokio::main] +async fn main() { + // there is a valid "suppression" in the system there is a valid "suppression2" in + // the system + let configuration = datadog::Configuration::new(); + let api = SecurityMonitoringAPI::with_config(configuration); + let resp = api + .list_security_monitoring_suppressions( + ListSecurityMonitoringSuppressionsOptionalParams::default() + .page_size(1) + .page_number(0) + .query("id:3dd-0uc-h1s OR id:886e6c3e-e543-049c-ee1b-56a1110295c0".to_string()), + ) + .await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/examples/v2_security-monitoring_PreviewSecurityMonitoringRuleQuery.rs b/examples/v2_security-monitoring_PreviewSecurityMonitoringRuleQuery.rs new file mode 100644 index 000000000..7cdd3da99 --- /dev/null +++ b/examples/v2_security-monitoring_PreviewSecurityMonitoringRuleQuery.rs @@ -0,0 +1,28 @@ +// Preview a rule query with applied filters returns "OK" response +use datadog_api_client::datadog; +use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI; +use datadog_api_client::datadogV2::model::SecurityMonitoringRuleDetectionMethod; +use datadog_api_client::datadogV2::model::SecurityMonitoringRuleLivetailRequest; +use datadog_api_client::datadogV2::model::SecurityMonitoringRuleTypeRead; + +#[tokio::main] +async fn main() { + let body = SecurityMonitoringRuleLivetailRequest::new( + "logs".to_string(), + SecurityMonitoringRuleDetectionMethod::THRESHOLD, + "source:cloudtrail".to_string(), + 0, + SecurityMonitoringRuleTypeRead::LOG_DETECTION, + ) + .distinct_fields(vec![]) + .filters(vec![]) + .group_by_fields(vec![]); + let configuration = datadog::Configuration::new(); + let api = SecurityMonitoringAPI::with_config(configuration); + let resp = api.preview_security_monitoring_rule_query(body).await; + if let Ok(value) = resp { + println!("{:#?}", value); + } else { + println!("{:#?}", resp.unwrap_err()); + } +} diff --git a/examples/v2_synthetics_CreateSyntheticsSuite.rs b/examples/v2_synthetics_CreateSyntheticsSuite.rs deleted file mode 100644 index c449f1e80..000000000 --- a/examples/v2_synthetics_CreateSyntheticsSuite.rs +++ /dev/null @@ -1,32 +0,0 @@ -// Synthetics: Create a test suite returns "OK" response -use datadog_api_client::datadog; -use datadog_api_client::datadogV2::api_synthetics::SyntheticsAPI; -use datadog_api_client::datadogV2::model::SuiteCreateEdit; -use datadog_api_client::datadogV2::model::SuiteCreateEditRequest; -use datadog_api_client::datadogV2::model::SyntheticsSuite; -use datadog_api_client::datadogV2::model::SyntheticsSuiteOptions; -use datadog_api_client::datadogV2::model::SyntheticsSuiteType; -use datadog_api_client::datadogV2::model::SyntheticsSuiteTypes; - -#[tokio::main] -async fn main() { - let body = SuiteCreateEditRequest::new(SuiteCreateEdit::new( - SyntheticsSuite::new( - "Example suite name".to_string(), - SyntheticsSuiteOptions::new(), - vec![], - SyntheticsSuiteType::SUITE, - ) - .message("Notification message".to_string()) - .tags(vec!["env:production".to_string()]), - SyntheticsSuiteTypes::SUITES, - )); - let configuration = datadog::Configuration::new(); - let api = SyntheticsAPI::with_config(configuration); - let resp = api.create_synthetics_suite(body).await; - if let Ok(value) = resp { - println!("{:#?}", value); - } else { - println!("{:#?}", resp.unwrap_err()); - } -} diff --git a/examples/v2_synthetics_DeleteSyntheticsSuites.rs b/examples/v2_synthetics_DeleteSyntheticsSuites.rs deleted file mode 100644 index 06e8de8b7..000000000 --- a/examples/v2_synthetics_DeleteSyntheticsSuites.rs +++ /dev/null @@ -1,25 +0,0 @@ -// Synthetics: Bulk delete suites returns "OK" response -use datadog_api_client::datadog; -use datadog_api_client::datadogV2::api_synthetics::SyntheticsAPI; -use datadog_api_client::datadogV2::model::DeletedSuitesRequestDelete; -use datadog_api_client::datadogV2::model::DeletedSuitesRequestDeleteAttributes; -use datadog_api_client::datadogV2::model::DeletedSuitesRequestDeleteRequest; -use datadog_api_client::datadogV2::model::DeletedSuitesRequestType; - -#[tokio::main] -async fn main() { - let body = DeletedSuitesRequestDeleteRequest::new( - DeletedSuitesRequestDelete::new(DeletedSuitesRequestDeleteAttributes::new(vec![ - "".to_string() - ])) - .type_(DeletedSuitesRequestType::DELETE_SUITES_REQUEST), - ); - let configuration = datadog::Configuration::new(); - let api = SyntheticsAPI::with_config(configuration); - let resp = api.delete_synthetics_suites(body).await; - if let Ok(value) = resp { - println!("{:#?}", value); - } else { - println!("{:#?}", resp.unwrap_err()); - } -} diff --git a/examples/v2_synthetics_EditSyntheticsSuite.rs b/examples/v2_synthetics_EditSyntheticsSuite.rs deleted file mode 100644 index d0f6d6600..000000000 --- a/examples/v2_synthetics_EditSyntheticsSuite.rs +++ /dev/null @@ -1,37 +0,0 @@ -// Synthetics: Edit a test suite returns "OK" response -use datadog_api_client::datadog; -use datadog_api_client::datadogV2::api_synthetics::SyntheticsAPI; -use datadog_api_client::datadogV2::model::SuiteCreateEdit; -use datadog_api_client::datadogV2::model::SuiteCreateEditRequest; -use datadog_api_client::datadogV2::model::SyntheticsSuite; -use datadog_api_client::datadogV2::model::SyntheticsSuiteOptions; -use datadog_api_client::datadogV2::model::SyntheticsSuiteTest; -use datadog_api_client::datadogV2::model::SyntheticsSuiteTestAlertingCriticality; -use datadog_api_client::datadogV2::model::SyntheticsSuiteType; -use datadog_api_client::datadogV2::model::SyntheticsSuiteTypes; - -#[tokio::main] -async fn main() { - let body = SuiteCreateEditRequest::new(SuiteCreateEdit::new( - SyntheticsSuite::new( - "Example suite name".to_string(), - SyntheticsSuiteOptions::new(), - vec![SyntheticsSuiteTest::new("".to_string()) - .alerting_criticality(SyntheticsSuiteTestAlertingCriticality::CRITICAL)], - SyntheticsSuiteType::SUITE, - ) - .message("Notification message".to_string()) - .tags(vec!["env:production".to_string()]), - SyntheticsSuiteTypes::SUITES, - )); - let configuration = datadog::Configuration::new(); - let api = SyntheticsAPI::with_config(configuration); - let resp = api - .edit_synthetics_suite("public_id".to_string(), body) - .await; - if let Ok(value) = resp { - println!("{:#?}", value); - } else { - println!("{:#?}", resp.unwrap_err()); - } -} diff --git a/examples/v2_synthetics_GetSyntheticsSuite.rs b/examples/v2_synthetics_GetSyntheticsSuite.rs deleted file mode 100644 index b8bee3b74..000000000 --- a/examples/v2_synthetics_GetSyntheticsSuite.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Synthetics: Get a suite returns "OK" response -use datadog_api_client::datadog; -use datadog_api_client::datadogV2::api_synthetics::SyntheticsAPI; - -#[tokio::main] -async fn main() { - let configuration = datadog::Configuration::new(); - let api = SyntheticsAPI::with_config(configuration); - let resp = api.get_synthetics_suite("public_id".to_string()).await; - if let Ok(value) = resp { - println!("{:#?}", value); - } else { - println!("{:#?}", resp.unwrap_err()); - } -} diff --git a/examples/v2_synthetics_SearchSuites.rs b/examples/v2_synthetics_SearchSuites.rs deleted file mode 100644 index cee51134b..000000000 --- a/examples/v2_synthetics_SearchSuites.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Search Synthetics suites returns "OK" response -use datadog_api_client::datadog; -use datadog_api_client::datadogV2::api_synthetics::SearchSuitesOptionalParams; -use datadog_api_client::datadogV2::api_synthetics::SyntheticsAPI; - -#[tokio::main] -async fn main() { - let configuration = datadog::Configuration::new(); - let api = SyntheticsAPI::with_config(configuration); - let resp = api - .search_suites(SearchSuitesOptionalParams::default()) - .await; - if let Ok(value) = resp { - println!("{:#?}", value); - } else { - println!("{:#?}", resp.unwrap_err()); - } -} diff --git a/src/datadogV2/api/api_security_monitoring.rs b/src/datadogV2/api/api_security_monitoring.rs index 181d592e9..a38c48391 100644 --- a/src/datadogV2/api/api_security_monitoring.rs +++ b/src/datadogV2/api/api_security_monitoring.rs @@ -606,6 +606,12 @@ impl ListSecurityMonitoringSignalsOptionalParams { pub struct ListSecurityMonitoringSuppressionsOptionalParams { /// Query string. pub query: Option, + /// Attribute used to sort the list of suppression rules. Prefix with `-` to sort in descending order. + pub sort: Option, + /// Size for a given page. Use `-1` to return all items. + pub page_size: Option, + /// Specific page number to return. + pub page_number: Option, } impl ListSecurityMonitoringSuppressionsOptionalParams { @@ -614,6 +620,24 @@ impl ListSecurityMonitoringSuppressionsOptionalParams { self.query = Some(value); self } + /// Attribute used to sort the list of suppression rules. Prefix with `-` to sort in descending order. + pub fn sort( + mut self, + value: crate::datadogV2::model::SecurityMonitoringSuppressionSort, + ) -> Self { + self.sort = Some(value); + self + } + /// Size for a given page. Use `-1` to return all items. + pub fn page_size(mut self, value: i64) -> Self { + self.page_size = Some(value); + self + } + /// Specific page number to return. + pub fn page_number(mut self, value: i64) -> Self { + self.page_number = Some(value); + self + } } /// ListThreatHuntingJobsOptionalParams is a struct for passing parameters to the method [`SecurityMonitoringAPI::list_threat_hunting_jobs`] @@ -1672,6 +1696,14 @@ pub enum PatchVulnerabilityNotificationRuleError { UnknownValue(serde_json::Value), } +/// PreviewSecurityMonitoringRuleQueryError is a struct for typed errors of method [`SecurityMonitoringAPI::preview_security_monitoring_rule_query`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum PreviewSecurityMonitoringRuleQueryError { + APIErrorResponse(crate::datadogV2::model::APIErrorResponse), + UnknownValue(serde_json::Value), +} + /// RunThreatHuntingJobError is a struct for typed errors of method [`SecurityMonitoringAPI::run_threat_hunting_job`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -9958,7 +9990,7 @@ impl SecurityMonitoringAPI { &self, params: ListSecurityMonitoringSuppressionsOptionalParams, ) -> Result< - crate::datadogV2::model::SecurityMonitoringSuppressionsResponse, + crate::datadogV2::model::SecurityMonitoringPaginatedSuppressionsResponse, datadog::Error, > { match self @@ -9983,7 +10015,9 @@ impl SecurityMonitoringAPI { &self, params: ListSecurityMonitoringSuppressionsOptionalParams, ) -> Result< - datadog::ResponseContent, + datadog::ResponseContent< + crate::datadogV2::model::SecurityMonitoringPaginatedSuppressionsResponse, + >, datadog::Error, > { let local_configuration = &self.config; @@ -9991,6 +10025,9 @@ impl SecurityMonitoringAPI { // unbox and build optional parameters let query = params.query; + let sort = params.sort; + let page_size = params.page_size; + let page_number = params.page_number; let local_client = &self.client; @@ -10005,6 +10042,18 @@ impl SecurityMonitoringAPI { local_req_builder = local_req_builder.query(&[("query", &local_query_param.to_string())]); }; + if let Some(ref local_query_param) = sort { + local_req_builder = + local_req_builder.query(&[("sort", &local_query_param.to_string())]); + }; + if let Some(ref local_query_param) = page_size { + local_req_builder = + local_req_builder.query(&[("page[size]", &local_query_param.to_string())]); + }; + if let Some(ref local_query_param) = page_number { + local_req_builder = + local_req_builder.query(&[("page[number]", &local_query_param.to_string())]); + }; // build headers let mut headers = HeaderMap::new(); @@ -10049,7 +10098,7 @@ impl SecurityMonitoringAPI { if !local_status.is_client_error() && !local_status.is_server_error() { match serde_json::from_str::< - crate::datadogV2::model::SecurityMonitoringSuppressionsResponse, + crate::datadogV2::model::SecurityMonitoringPaginatedSuppressionsResponse, >(&local_content) { Ok(e) => { @@ -11487,6 +11536,166 @@ impl SecurityMonitoringAPI { } } + /// Preview a security monitoring rule query with security filters, group by fields, and distinct fields applied. + /// This endpoint is used in the rule editor to show how the query will be transformed after applying additional filters. + pub async fn preview_security_monitoring_rule_query( + &self, + body: crate::datadogV2::model::SecurityMonitoringRuleLivetailRequest, + ) -> Result< + crate::datadogV2::model::SecurityMonitoringRuleLivetailResponse, + datadog::Error, + > { + match self + .preview_security_monitoring_rule_query_with_http_info(body) + .await + { + Ok(response_content) => { + if let Some(e) = response_content.entity { + Ok(e) + } else { + Err(datadog::Error::Serde(serde::de::Error::custom( + "response content was None", + ))) + } + } + Err(err) => Err(err), + } + } + + /// Preview a security monitoring rule query with security filters, group by fields, and distinct fields applied. + /// This endpoint is used in the rule editor to show how the query will be transformed after applying additional filters. + pub async fn preview_security_monitoring_rule_query_with_http_info( + &self, + body: crate::datadogV2::model::SecurityMonitoringRuleLivetailRequest, + ) -> Result< + datadog::ResponseContent, + datadog::Error, + > { + let local_configuration = &self.config; + let operation_id = "v2.preview_security_monitoring_rule_query"; + + let local_client = &self.client; + + let local_uri_str = format!( + "{}/api/v2/security_monitoring/livetail", + local_configuration.get_operation_host(operation_id) + ); + let mut local_req_builder = + local_client.request(reqwest::Method::POST, local_uri_str.as_str()); + + // build headers + let mut headers = HeaderMap::new(); + headers.insert("Content-Type", HeaderValue::from_static("application/json")); + headers.insert("Accept", HeaderValue::from_static("application/json")); + + // build user agent + match HeaderValue::from_str(local_configuration.user_agent.as_str()) { + Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), + Err(e) => { + log::warn!("Failed to parse user agent header: {e}, falling back to default"); + headers.insert( + reqwest::header::USER_AGENT, + HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), + ) + } + }; + + // build auth + if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { + headers.insert( + "DD-API-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-API-KEY header"), + ); + }; + if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { + headers.insert( + "DD-APPLICATION-KEY", + HeaderValue::from_str(local_key.key.as_str()) + .expect("failed to parse DD-APPLICATION-KEY header"), + ); + }; + + // build body parameters + let output = Vec::new(); + let mut ser = serde_json::Serializer::with_formatter(output, datadog::DDFormatter); + if body.serialize(&mut ser).is_ok() { + if let Some(content_encoding) = headers.get("Content-Encoding") { + match content_encoding.to_str().unwrap_or_default() { + "gzip" => { + let mut enc = GzEncoder::new(Vec::new(), Compression::default()); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + "deflate" => { + let mut enc = ZlibEncoder::new(Vec::new(), Compression::default()); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + "zstd1" => { + let mut enc = zstd::stream::Encoder::new(Vec::new(), 0).unwrap(); + let _ = enc.write_all(ser.into_inner().as_slice()); + match enc.finish() { + Ok(buf) => { + local_req_builder = local_req_builder.body(buf); + } + Err(e) => return Err(datadog::Error::Io(e)), + } + } + _ => { + local_req_builder = local_req_builder.body(ser.into_inner()); + } + } + } else { + local_req_builder = local_req_builder.body(ser.into_inner()); + } + } + + local_req_builder = local_req_builder.headers(headers); + let local_req = local_req_builder.build()?; + log::debug!("request content: {:?}", local_req.body()); + let local_resp = local_client.execute(local_req).await?; + + let local_status = local_resp.status(); + let local_content = local_resp.text().await?; + log::debug!("response content: {}", local_content); + + if !local_status.is_client_error() && !local_status.is_server_error() { + match serde_json::from_str::< + crate::datadogV2::model::SecurityMonitoringRuleLivetailResponse, + >(&local_content) + { + Ok(e) => { + return Ok(datadog::ResponseContent { + status: local_status, + content: local_content, + entity: Some(e), + }) + } + Err(e) => return Err(datadog::Error::Serde(e)), + }; + } else { + let local_entity: Option = + serde_json::from_str(&local_content).ok(); + let local_error = datadog::ResponseContent { + status: local_status, + content: local_content, + entity: local_entity, + }; + Err(datadog::Error::ResponseError(local_error)) + } + } + /// Run a threat hunting job. pub async fn run_threat_hunting_job( &self, diff --git a/src/datadogV2/api/api_synthetics.rs b/src/datadogV2/api/api_synthetics.rs index 934e98911..221410968 100644 --- a/src/datadogV2/api/api_synthetics.rs +++ b/src/datadogV2/api/api_synthetics.rs @@ -10,74 +10,6 @@ use reqwest::header::{HeaderMap, HeaderValue}; use serde::{Deserialize, Serialize}; use std::io::Write; -/// SearchSuitesOptionalParams is a struct for passing parameters to the method [`SyntheticsAPI::search_suites`] -#[non_exhaustive] -#[derive(Clone, Default, Debug)] -pub struct SearchSuitesOptionalParams { - /// The search query. - pub query: Option, - /// The sort order for the results (e.g., `name,asc` or `name,desc`). - pub sort: Option, - /// If true, return only facets instead of full test details. - pub facets_only: Option, - /// The offset from which to start returning results. - pub start: Option, - /// The maximum number of results to return. - pub count: Option, -} - -impl SearchSuitesOptionalParams { - /// The search query. - pub fn query(mut self, value: String) -> Self { - self.query = Some(value); - self - } - /// The sort order for the results (e.g., `name,asc` or `name,desc`). - pub fn sort(mut self, value: String) -> Self { - self.sort = Some(value); - self - } - /// If true, return only facets instead of full test details. - pub fn facets_only(mut self, value: bool) -> Self { - self.facets_only = Some(value); - self - } - /// The offset from which to start returning results. - pub fn start(mut self, value: i64) -> Self { - self.start = Some(value); - self - } - /// The maximum number of results to return. - pub fn count(mut self, value: i64) -> Self { - self.count = Some(value); - self - } -} - -/// CreateSyntheticsSuiteError is a struct for typed errors of method [`SyntheticsAPI::create_synthetics_suite`] -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(untagged)] -pub enum CreateSyntheticsSuiteError { - APIErrorResponse(crate::datadogV2::model::APIErrorResponse), - UnknownValue(serde_json::Value), -} - -/// DeleteSyntheticsSuitesError is a struct for typed errors of method [`SyntheticsAPI::delete_synthetics_suites`] -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(untagged)] -pub enum DeleteSyntheticsSuitesError { - APIErrorResponse(crate::datadogV2::model::APIErrorResponse), - UnknownValue(serde_json::Value), -} - -/// EditSyntheticsSuiteError is a struct for typed errors of method [`SyntheticsAPI::edit_synthetics_suite`] -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(untagged)] -pub enum EditSyntheticsSuiteError { - APIErrorResponse(crate::datadogV2::model::APIErrorResponse), - UnknownValue(serde_json::Value), -} - /// GetOnDemandConcurrencyCapError is a struct for typed errors of method [`SyntheticsAPI::get_on_demand_concurrency_cap`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -86,14 +18,6 @@ pub enum GetOnDemandConcurrencyCapError { UnknownValue(serde_json::Value), } -/// GetSyntheticsSuiteError is a struct for typed errors of method [`SyntheticsAPI::get_synthetics_suite`] -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(untagged)] -pub enum GetSyntheticsSuiteError { - APIErrorResponse(crate::datadogV2::model::APIErrorResponse), - UnknownValue(serde_json::Value), -} - /// PatchGlobalVariableError is a struct for typed errors of method [`SyntheticsAPI::patch_global_variable`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -102,14 +26,6 @@ pub enum PatchGlobalVariableError { UnknownValue(serde_json::Value), } -/// SearchSuitesError is a struct for typed errors of method [`SyntheticsAPI::search_suites`] -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(untagged)] -pub enum SearchSuitesError { - APIErrorResponse(crate::datadogV2::model::APIErrorResponse), - UnknownValue(serde_json::Value), -} - /// SetOnDemandConcurrencyCapError is a struct for typed errors of method [`SyntheticsAPI::set_on_demand_concurrency_cap`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -189,14 +105,14 @@ impl SyntheticsAPI { Self { config, client } } - pub async fn create_synthetics_suite( + /// Get the on-demand concurrency cap. + pub async fn get_on_demand_concurrency_cap( &self, - body: crate::datadogV2::model::SuiteCreateEditRequest, ) -> Result< - crate::datadogV2::model::SyntheticsSuiteResponse, - datadog::Error, + crate::datadogV2::model::OnDemandConcurrencyCapResponse, + datadog::Error, > { - match self.create_synthetics_suite_with_http_info(body).await { + match self.get_on_demand_concurrency_cap_with_http_info().await { Ok(response_content) => { if let Some(e) = response_content.entity { Ok(e) @@ -210,28 +126,27 @@ impl SyntheticsAPI { } } - pub async fn create_synthetics_suite_with_http_info( + /// Get the on-demand concurrency cap. + pub async fn get_on_demand_concurrency_cap_with_http_info( &self, - body: crate::datadogV2::model::SuiteCreateEditRequest, ) -> Result< - datadog::ResponseContent, - datadog::Error, + datadog::ResponseContent, + datadog::Error, > { let local_configuration = &self.config; - let operation_id = "v2.create_synthetics_suite"; + let operation_id = "v2.get_on_demand_concurrency_cap"; let local_client = &self.client; let local_uri_str = format!( - "{}/api/v2/synthetics/suites", + "{}/api/v2/synthetics/settings/on_demand_concurrency_cap", local_configuration.get_operation_host(operation_id) ); let mut local_req_builder = - local_client.request(reqwest::Method::POST, local_uri_str.as_str()); + local_client.request(reqwest::Method::GET, local_uri_str.as_str()); // build headers let mut headers = HeaderMap::new(); - headers.insert("Content-Type", HeaderValue::from_static("application/json")); headers.insert("Accept", HeaderValue::from_static("application/json")); // build user agent @@ -262,51 +177,6 @@ impl SyntheticsAPI { ); }; - // build body parameters - let output = Vec::new(); - let mut ser = serde_json::Serializer::with_formatter(output, datadog::DDFormatter); - if body.serialize(&mut ser).is_ok() { - if let Some(content_encoding) = headers.get("Content-Encoding") { - match content_encoding.to_str().unwrap_or_default() { - "gzip" => { - let mut enc = GzEncoder::new(Vec::new(), Compression::default()); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - "deflate" => { - let mut enc = ZlibEncoder::new(Vec::new(), Compression::default()); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - "zstd1" => { - let mut enc = zstd::stream::Encoder::new(Vec::new(), 0).unwrap(); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - _ => { - local_req_builder = local_req_builder.body(ser.into_inner()); - } - } - } else { - local_req_builder = local_req_builder.body(ser.into_inner()); - } - } - local_req_builder = local_req_builder.headers(headers); let local_req = local_req_builder.build()?; log::debug!("request content: {:?}", local_req.body()); @@ -317,7 +187,7 @@ impl SyntheticsAPI { log::debug!("response content: {}", local_content); if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::( + match serde_json::from_str::( &local_content, ) { Ok(e) => { @@ -330,7 +200,7 @@ impl SyntheticsAPI { Err(e) => return Err(datadog::Error::Serde(e)), }; } else { - let local_entity: Option = + let local_entity: Option = serde_json::from_str(&local_content).ok(); let local_error = datadog::ResponseContent { status: local_status, @@ -341,14 +211,26 @@ impl SyntheticsAPI { } } - pub async fn delete_synthetics_suites( + /// Patch a global variable using JSON Patch (RFC 6902). + /// This endpoint allows partial updates to a global variable by specifying only the fields to modify. + /// + /// Common operations include: + /// - Replace field values: `{"op": "replace", "path": "/name", "value": "new_name"}` + /// - Update nested values: `{"op": "replace", "path": "/value/value", "value": "new_value"}` + /// - Add/update tags: `{"op": "add", "path": "/tags/-", "value": "new_tag"}` + /// - Remove fields: `{"op": "remove", "path": "/description"}` + pub async fn patch_global_variable( &self, - body: crate::datadogV2::model::DeletedSuitesRequestDeleteRequest, + variable_id: String, + body: crate::datadogV2::model::GlobalVariableJsonPatchRequest, ) -> Result< - crate::datadogV2::model::DeletedSuitesResponse, - datadog::Error, + crate::datadogV2::model::GlobalVariableResponse, + datadog::Error, > { - match self.delete_synthetics_suites_with_http_info(body).await { + match self + .patch_global_variable_with_http_info(variable_id, body) + .await + { Ok(response_content) => { if let Some(e) = response_content.entity { Ok(e) @@ -362,24 +244,34 @@ impl SyntheticsAPI { } } - pub async fn delete_synthetics_suites_with_http_info( + /// Patch a global variable using JSON Patch (RFC 6902). + /// This endpoint allows partial updates to a global variable by specifying only the fields to modify. + /// + /// Common operations include: + /// - Replace field values: `{"op": "replace", "path": "/name", "value": "new_name"}` + /// - Update nested values: `{"op": "replace", "path": "/value/value", "value": "new_value"}` + /// - Add/update tags: `{"op": "add", "path": "/tags/-", "value": "new_tag"}` + /// - Remove fields: `{"op": "remove", "path": "/description"}` + pub async fn patch_global_variable_with_http_info( &self, - body: crate::datadogV2::model::DeletedSuitesRequestDeleteRequest, + variable_id: String, + body: crate::datadogV2::model::GlobalVariableJsonPatchRequest, ) -> Result< - datadog::ResponseContent, - datadog::Error, + datadog::ResponseContent, + datadog::Error, > { let local_configuration = &self.config; - let operation_id = "v2.delete_synthetics_suites"; + let operation_id = "v2.patch_global_variable"; let local_client = &self.client; let local_uri_str = format!( - "{}/api/v2/synthetics/suites/bulk-delete", - local_configuration.get_operation_host(operation_id) + "{}/api/v2/synthetics/variables/{variable_id}/jsonpatch", + local_configuration.get_operation_host(operation_id), + variable_id = datadog::urlencode(variable_id) ); let mut local_req_builder = - local_client.request(reqwest::Method::POST, local_uri_str.as_str()); + local_client.request(reqwest::Method::PATCH, local_uri_str.as_str()); // build headers let mut headers = HeaderMap::new(); @@ -469,7 +361,7 @@ impl SyntheticsAPI { log::debug!("response content: {}", local_content); if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::( + match serde_json::from_str::( &local_content, ) { Ok(e) => { @@ -482,7 +374,7 @@ impl SyntheticsAPI { Err(e) => return Err(datadog::Error::Serde(e)), }; } else { - let local_entity: Option = + let local_entity: Option = serde_json::from_str(&local_content).ok(); let local_error = datadog::ResponseContent { status: local_status, @@ -493,686 +385,6 @@ impl SyntheticsAPI { } } - pub async fn edit_synthetics_suite( - &self, - public_id: String, - body: crate::datadogV2::model::SuiteCreateEditRequest, - ) -> Result< - crate::datadogV2::model::SyntheticsSuiteResponse, - datadog::Error, - > { - match self - .edit_synthetics_suite_with_http_info(public_id, body) - .await - { - Ok(response_content) => { - if let Some(e) = response_content.entity { - Ok(e) - } else { - Err(datadog::Error::Serde(serde::de::Error::custom( - "response content was None", - ))) - } - } - Err(err) => Err(err), - } - } - - pub async fn edit_synthetics_suite_with_http_info( - &self, - public_id: String, - body: crate::datadogV2::model::SuiteCreateEditRequest, - ) -> Result< - datadog::ResponseContent, - datadog::Error, - > { - let local_configuration = &self.config; - let operation_id = "v2.edit_synthetics_suite"; - - let local_client = &self.client; - - let local_uri_str = format!( - "{}/api/v2/synthetics/suites/{public_id}", - local_configuration.get_operation_host(operation_id), - public_id = datadog::urlencode(public_id) - ); - let mut local_req_builder = - local_client.request(reqwest::Method::PUT, local_uri_str.as_str()); - - // build headers - let mut headers = HeaderMap::new(); - headers.insert("Content-Type", HeaderValue::from_static("application/json")); - headers.insert("Accept", HeaderValue::from_static("application/json")); - - // build user agent - match HeaderValue::from_str(local_configuration.user_agent.as_str()) { - Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), - Err(e) => { - log::warn!("Failed to parse user agent header: {e}, falling back to default"); - headers.insert( - reqwest::header::USER_AGENT, - HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), - ) - } - }; - - // build auth - if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { - headers.insert( - "DD-API-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-API-KEY header"), - ); - }; - if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { - headers.insert( - "DD-APPLICATION-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-APPLICATION-KEY header"), - ); - }; - - // build body parameters - let output = Vec::new(); - let mut ser = serde_json::Serializer::with_formatter(output, datadog::DDFormatter); - if body.serialize(&mut ser).is_ok() { - if let Some(content_encoding) = headers.get("Content-Encoding") { - match content_encoding.to_str().unwrap_or_default() { - "gzip" => { - let mut enc = GzEncoder::new(Vec::new(), Compression::default()); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - "deflate" => { - let mut enc = ZlibEncoder::new(Vec::new(), Compression::default()); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - "zstd1" => { - let mut enc = zstd::stream::Encoder::new(Vec::new(), 0).unwrap(); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - _ => { - local_req_builder = local_req_builder.body(ser.into_inner()); - } - } - } else { - local_req_builder = local_req_builder.body(ser.into_inner()); - } - } - - local_req_builder = local_req_builder.headers(headers); - let local_req = local_req_builder.build()?; - log::debug!("request content: {:?}", local_req.body()); - let local_resp = local_client.execute(local_req).await?; - - let local_status = local_resp.status(); - let local_content = local_resp.text().await?; - log::debug!("response content: {}", local_content); - - if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::( - &local_content, - ) { - Ok(e) => { - return Ok(datadog::ResponseContent { - status: local_status, - content: local_content, - entity: Some(e), - }) - } - Err(e) => return Err(datadog::Error::Serde(e)), - }; - } else { - let local_entity: Option = - serde_json::from_str(&local_content).ok(); - let local_error = datadog::ResponseContent { - status: local_status, - content: local_content, - entity: local_entity, - }; - Err(datadog::Error::ResponseError(local_error)) - } - } - - /// Get the on-demand concurrency cap. - pub async fn get_on_demand_concurrency_cap( - &self, - ) -> Result< - crate::datadogV2::model::OnDemandConcurrencyCapResponse, - datadog::Error, - > { - match self.get_on_demand_concurrency_cap_with_http_info().await { - Ok(response_content) => { - if let Some(e) = response_content.entity { - Ok(e) - } else { - Err(datadog::Error::Serde(serde::de::Error::custom( - "response content was None", - ))) - } - } - Err(err) => Err(err), - } - } - - /// Get the on-demand concurrency cap. - pub async fn get_on_demand_concurrency_cap_with_http_info( - &self, - ) -> Result< - datadog::ResponseContent, - datadog::Error, - > { - let local_configuration = &self.config; - let operation_id = "v2.get_on_demand_concurrency_cap"; - - let local_client = &self.client; - - let local_uri_str = format!( - "{}/api/v2/synthetics/settings/on_demand_concurrency_cap", - local_configuration.get_operation_host(operation_id) - ); - let mut local_req_builder = - local_client.request(reqwest::Method::GET, local_uri_str.as_str()); - - // build headers - let mut headers = HeaderMap::new(); - headers.insert("Accept", HeaderValue::from_static("application/json")); - - // build user agent - match HeaderValue::from_str(local_configuration.user_agent.as_str()) { - Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), - Err(e) => { - log::warn!("Failed to parse user agent header: {e}, falling back to default"); - headers.insert( - reqwest::header::USER_AGENT, - HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), - ) - } - }; - - // build auth - if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { - headers.insert( - "DD-API-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-API-KEY header"), - ); - }; - if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { - headers.insert( - "DD-APPLICATION-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-APPLICATION-KEY header"), - ); - }; - - local_req_builder = local_req_builder.headers(headers); - let local_req = local_req_builder.build()?; - log::debug!("request content: {:?}", local_req.body()); - let local_resp = local_client.execute(local_req).await?; - - let local_status = local_resp.status(); - let local_content = local_resp.text().await?; - log::debug!("response content: {}", local_content); - - if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::( - &local_content, - ) { - Ok(e) => { - return Ok(datadog::ResponseContent { - status: local_status, - content: local_content, - entity: Some(e), - }) - } - Err(e) => return Err(datadog::Error::Serde(e)), - }; - } else { - let local_entity: Option = - serde_json::from_str(&local_content).ok(); - let local_error = datadog::ResponseContent { - status: local_status, - content: local_content, - entity: local_entity, - }; - Err(datadog::Error::ResponseError(local_error)) - } - } - - pub async fn get_synthetics_suite( - &self, - public_id: String, - ) -> Result< - crate::datadogV2::model::SyntheticsSuiteResponse, - datadog::Error, - > { - match self.get_synthetics_suite_with_http_info(public_id).await { - Ok(response_content) => { - if let Some(e) = response_content.entity { - Ok(e) - } else { - Err(datadog::Error::Serde(serde::de::Error::custom( - "response content was None", - ))) - } - } - Err(err) => Err(err), - } - } - - pub async fn get_synthetics_suite_with_http_info( - &self, - public_id: String, - ) -> Result< - datadog::ResponseContent, - datadog::Error, - > { - let local_configuration = &self.config; - let operation_id = "v2.get_synthetics_suite"; - - let local_client = &self.client; - - let local_uri_str = format!( - "{}/api/v2/synthetics/suites/{public_id}", - local_configuration.get_operation_host(operation_id), - public_id = datadog::urlencode(public_id) - ); - let mut local_req_builder = - local_client.request(reqwest::Method::GET, local_uri_str.as_str()); - - // build headers - let mut headers = HeaderMap::new(); - headers.insert("Accept", HeaderValue::from_static("application/json")); - - // build user agent - match HeaderValue::from_str(local_configuration.user_agent.as_str()) { - Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), - Err(e) => { - log::warn!("Failed to parse user agent header: {e}, falling back to default"); - headers.insert( - reqwest::header::USER_AGENT, - HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), - ) - } - }; - - // build auth - if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { - headers.insert( - "DD-API-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-API-KEY header"), - ); - }; - if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { - headers.insert( - "DD-APPLICATION-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-APPLICATION-KEY header"), - ); - }; - - local_req_builder = local_req_builder.headers(headers); - let local_req = local_req_builder.build()?; - log::debug!("request content: {:?}", local_req.body()); - let local_resp = local_client.execute(local_req).await?; - - let local_status = local_resp.status(); - let local_content = local_resp.text().await?; - log::debug!("response content: {}", local_content); - - if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::( - &local_content, - ) { - Ok(e) => { - return Ok(datadog::ResponseContent { - status: local_status, - content: local_content, - entity: Some(e), - }) - } - Err(e) => return Err(datadog::Error::Serde(e)), - }; - } else { - let local_entity: Option = - serde_json::from_str(&local_content).ok(); - let local_error = datadog::ResponseContent { - status: local_status, - content: local_content, - entity: local_entity, - }; - Err(datadog::Error::ResponseError(local_error)) - } - } - - /// Patch a global variable using JSON Patch (RFC 6902). - /// This endpoint allows partial updates to a global variable by specifying only the fields to modify. - /// - /// Common operations include: - /// - Replace field values: `{"op": "replace", "path": "/name", "value": "new_name"}` - /// - Update nested values: `{"op": "replace", "path": "/value/value", "value": "new_value"}` - /// - Add/update tags: `{"op": "add", "path": "/tags/-", "value": "new_tag"}` - /// - Remove fields: `{"op": "remove", "path": "/description"}` - pub async fn patch_global_variable( - &self, - variable_id: String, - body: crate::datadogV2::model::GlobalVariableJsonPatchRequest, - ) -> Result< - crate::datadogV2::model::GlobalVariableResponse, - datadog::Error, - > { - match self - .patch_global_variable_with_http_info(variable_id, body) - .await - { - Ok(response_content) => { - if let Some(e) = response_content.entity { - Ok(e) - } else { - Err(datadog::Error::Serde(serde::de::Error::custom( - "response content was None", - ))) - } - } - Err(err) => Err(err), - } - } - - /// Patch a global variable using JSON Patch (RFC 6902). - /// This endpoint allows partial updates to a global variable by specifying only the fields to modify. - /// - /// Common operations include: - /// - Replace field values: `{"op": "replace", "path": "/name", "value": "new_name"}` - /// - Update nested values: `{"op": "replace", "path": "/value/value", "value": "new_value"}` - /// - Add/update tags: `{"op": "add", "path": "/tags/-", "value": "new_tag"}` - /// - Remove fields: `{"op": "remove", "path": "/description"}` - pub async fn patch_global_variable_with_http_info( - &self, - variable_id: String, - body: crate::datadogV2::model::GlobalVariableJsonPatchRequest, - ) -> Result< - datadog::ResponseContent, - datadog::Error, - > { - let local_configuration = &self.config; - let operation_id = "v2.patch_global_variable"; - - let local_client = &self.client; - - let local_uri_str = format!( - "{}/api/v2/synthetics/variables/{variable_id}/jsonpatch", - local_configuration.get_operation_host(operation_id), - variable_id = datadog::urlencode(variable_id) - ); - let mut local_req_builder = - local_client.request(reqwest::Method::PATCH, local_uri_str.as_str()); - - // build headers - let mut headers = HeaderMap::new(); - headers.insert("Content-Type", HeaderValue::from_static("application/json")); - headers.insert("Accept", HeaderValue::from_static("application/json")); - - // build user agent - match HeaderValue::from_str(local_configuration.user_agent.as_str()) { - Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), - Err(e) => { - log::warn!("Failed to parse user agent header: {e}, falling back to default"); - headers.insert( - reqwest::header::USER_AGENT, - HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), - ) - } - }; - - // build auth - if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { - headers.insert( - "DD-API-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-API-KEY header"), - ); - }; - if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { - headers.insert( - "DD-APPLICATION-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-APPLICATION-KEY header"), - ); - }; - - // build body parameters - let output = Vec::new(); - let mut ser = serde_json::Serializer::with_formatter(output, datadog::DDFormatter); - if body.serialize(&mut ser).is_ok() { - if let Some(content_encoding) = headers.get("Content-Encoding") { - match content_encoding.to_str().unwrap_or_default() { - "gzip" => { - let mut enc = GzEncoder::new(Vec::new(), Compression::default()); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - "deflate" => { - let mut enc = ZlibEncoder::new(Vec::new(), Compression::default()); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - "zstd1" => { - let mut enc = zstd::stream::Encoder::new(Vec::new(), 0).unwrap(); - let _ = enc.write_all(ser.into_inner().as_slice()); - match enc.finish() { - Ok(buf) => { - local_req_builder = local_req_builder.body(buf); - } - Err(e) => return Err(datadog::Error::Io(e)), - } - } - _ => { - local_req_builder = local_req_builder.body(ser.into_inner()); - } - } - } else { - local_req_builder = local_req_builder.body(ser.into_inner()); - } - } - - local_req_builder = local_req_builder.headers(headers); - let local_req = local_req_builder.build()?; - log::debug!("request content: {:?}", local_req.body()); - let local_resp = local_client.execute(local_req).await?; - - let local_status = local_resp.status(); - let local_content = local_resp.text().await?; - log::debug!("response content: {}", local_content); - - if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::( - &local_content, - ) { - Ok(e) => { - return Ok(datadog::ResponseContent { - status: local_status, - content: local_content, - entity: Some(e), - }) - } - Err(e) => return Err(datadog::Error::Serde(e)), - }; - } else { - let local_entity: Option = - serde_json::from_str(&local_content).ok(); - let local_error = datadog::ResponseContent { - status: local_status, - content: local_content, - entity: local_entity, - }; - Err(datadog::Error::ResponseError(local_error)) - } - } - - /// Search for Synthetics suites. - pub async fn search_suites( - &self, - params: SearchSuitesOptionalParams, - ) -> Result< - crate::datadogV2::model::SyntheticsSuiteSearchResponse, - datadog::Error, - > { - match self.search_suites_with_http_info(params).await { - Ok(response_content) => { - if let Some(e) = response_content.entity { - Ok(e) - } else { - Err(datadog::Error::Serde(serde::de::Error::custom( - "response content was None", - ))) - } - } - Err(err) => Err(err), - } - } - - /// Search for Synthetics suites. - pub async fn search_suites_with_http_info( - &self, - params: SearchSuitesOptionalParams, - ) -> Result< - datadog::ResponseContent, - datadog::Error, - > { - let local_configuration = &self.config; - let operation_id = "v2.search_suites"; - - // unbox and build optional parameters - let query = params.query; - let sort = params.sort; - let facets_only = params.facets_only; - let start = params.start; - let count = params.count; - - let local_client = &self.client; - - let local_uri_str = format!( - "{}/api/v2/synthetics/suites/search", - local_configuration.get_operation_host(operation_id) - ); - let mut local_req_builder = - local_client.request(reqwest::Method::GET, local_uri_str.as_str()); - - if let Some(ref local_query_param) = query { - local_req_builder = - local_req_builder.query(&[("query", &local_query_param.to_string())]); - }; - if let Some(ref local_query_param) = sort { - local_req_builder = - local_req_builder.query(&[("sort", &local_query_param.to_string())]); - }; - if let Some(ref local_query_param) = facets_only { - local_req_builder = - local_req_builder.query(&[("facets_only", &local_query_param.to_string())]); - }; - if let Some(ref local_query_param) = start { - local_req_builder = - local_req_builder.query(&[("start", &local_query_param.to_string())]); - }; - if let Some(ref local_query_param) = count { - local_req_builder = - local_req_builder.query(&[("count", &local_query_param.to_string())]); - }; - - // build headers - let mut headers = HeaderMap::new(); - headers.insert("Accept", HeaderValue::from_static("application/json")); - - // build user agent - match HeaderValue::from_str(local_configuration.user_agent.as_str()) { - Ok(user_agent) => headers.insert(reqwest::header::USER_AGENT, user_agent), - Err(e) => { - log::warn!("Failed to parse user agent header: {e}, falling back to default"); - headers.insert( - reqwest::header::USER_AGENT, - HeaderValue::from_static(datadog::DEFAULT_USER_AGENT.as_str()), - ) - } - }; - - // build auth - if let Some(local_key) = local_configuration.auth_keys.get("apiKeyAuth") { - headers.insert( - "DD-API-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-API-KEY header"), - ); - }; - if let Some(local_key) = local_configuration.auth_keys.get("appKeyAuth") { - headers.insert( - "DD-APPLICATION-KEY", - HeaderValue::from_str(local_key.key.as_str()) - .expect("failed to parse DD-APPLICATION-KEY header"), - ); - }; - - local_req_builder = local_req_builder.headers(headers); - let local_req = local_req_builder.build()?; - log::debug!("request content: {:?}", local_req.body()); - let local_resp = local_client.execute(local_req).await?; - - let local_status = local_resp.status(); - let local_content = local_resp.text().await?; - log::debug!("response content: {}", local_content); - - if !local_status.is_client_error() && !local_status.is_server_error() { - match serde_json::from_str::( - &local_content, - ) { - Ok(e) => { - return Ok(datadog::ResponseContent { - status: local_status, - content: local_content, - entity: Some(e), - }) - } - Err(e) => return Err(datadog::Error::Serde(e)), - }; - } else { - let local_entity: Option = serde_json::from_str(&local_content).ok(); - let local_error = datadog::ResponseContent { - status: local_status, - content: local_content, - entity: local_entity, - }; - Err(datadog::Error::ResponseError(local_error)) - } - } - /// Save new value for on-demand concurrency cap. pub async fn set_on_demand_concurrency_cap( &self, diff --git a/src/datadogV2/model/mod.rs b/src/datadogV2/model/mod.rs index 206bf8d18..54bd0d476 100644 --- a/src/datadogV2/model/mod.rs +++ b/src/datadogV2/model/mod.rs @@ -6220,14 +6220,20 @@ pub mod model_security_filter_update_data; pub use self::model_security_filter_update_data::SecurityFilterUpdateData; pub mod model_security_filter_update_attributes; pub use self::model_security_filter_update_attributes::SecurityFilterUpdateAttributes; -pub mod model_security_monitoring_suppressions_response; -pub use self::model_security_monitoring_suppressions_response::SecurityMonitoringSuppressionsResponse; +pub mod model_security_monitoring_suppression_sort; +pub use self::model_security_monitoring_suppression_sort::SecurityMonitoringSuppressionSort; +pub mod model_security_monitoring_paginated_suppressions_response; +pub use self::model_security_monitoring_paginated_suppressions_response::SecurityMonitoringPaginatedSuppressionsResponse; pub mod model_security_monitoring_suppression; pub use self::model_security_monitoring_suppression::SecurityMonitoringSuppression; pub mod model_security_monitoring_suppression_attributes; pub use self::model_security_monitoring_suppression_attributes::SecurityMonitoringSuppressionAttributes; pub mod model_security_monitoring_suppression_type; pub use self::model_security_monitoring_suppression_type::SecurityMonitoringSuppressionType; +pub mod model_security_monitoring_suppressions_meta; +pub use self::model_security_monitoring_suppressions_meta::SecurityMonitoringSuppressionsMeta; +pub mod model_security_monitoring_suppressions_page_meta; +pub use self::model_security_monitoring_suppressions_page_meta::SecurityMonitoringSuppressionsPageMeta; pub mod model_security_monitoring_suppression_create_request; pub use self::model_security_monitoring_suppression_create_request::SecurityMonitoringSuppressionCreateRequest; pub mod model_security_monitoring_suppression_create_data; @@ -6334,6 +6340,8 @@ pub mod model_cloud_configuration_rule_type; pub use self::model_cloud_configuration_rule_type::CloudConfigurationRuleType; pub mod model_security_monitoring_rule_create_payload; pub use self::model_security_monitoring_rule_create_payload::SecurityMonitoringRuleCreatePayload; +pub mod model_security_monitoring_suppressions_response; +pub use self::model_security_monitoring_suppressions_response::SecurityMonitoringSuppressionsResponse; pub mod model_security_monitoring_suppression_update_request; pub use self::model_security_monitoring_suppression_update_request::SecurityMonitoringSuppressionUpdateRequest; pub mod model_security_monitoring_suppression_update_data; @@ -6354,6 +6362,12 @@ pub mod model_version_history_update_type; pub use self::model_version_history_update_type::VersionHistoryUpdateType; pub mod model_get_suppression_version_history_data_type; pub use self::model_get_suppression_version_history_data_type::GetSuppressionVersionHistoryDataType; +pub mod model_security_monitoring_rule_livetail_request; +pub use self::model_security_monitoring_rule_livetail_request::SecurityMonitoringRuleLivetailRequest; +pub mod model_security_monitoring_rule_type_read; +pub use self::model_security_monitoring_rule_type_read::SecurityMonitoringRuleTypeRead; +pub mod model_security_monitoring_rule_livetail_response; +pub use self::model_security_monitoring_rule_livetail_response::SecurityMonitoringRuleLivetailResponse; pub mod model_security_monitoring_list_rules_response; pub use self::model_security_monitoring_list_rules_response::SecurityMonitoringListRulesResponse; pub mod model_security_monitoring_standard_rule_response; @@ -6362,8 +6376,6 @@ pub mod model_security_monitoring_rule_case; pub use self::model_security_monitoring_rule_case::SecurityMonitoringRuleCase; pub mod model_security_monitoring_third_party_rule_case; pub use self::model_security_monitoring_third_party_rule_case::SecurityMonitoringThirdPartyRuleCase; -pub mod model_security_monitoring_rule_type_read; -pub use self::model_security_monitoring_rule_type_read::SecurityMonitoringRuleTypeRead; pub mod model_security_monitoring_signal_rule_response; pub use self::model_security_monitoring_signal_rule_response::SecurityMonitoringSignalRuleResponse; pub mod model_security_monitoring_signal_rule_response_query; @@ -7002,48 +7014,6 @@ pub mod model_on_demand_concurrency_cap_attributes; pub use self::model_on_demand_concurrency_cap_attributes::OnDemandConcurrencyCapAttributes; pub mod model_on_demand_concurrency_cap_type; pub use self::model_on_demand_concurrency_cap_type::OnDemandConcurrencyCapType; -pub mod model_suite_create_edit_request; -pub use self::model_suite_create_edit_request::SuiteCreateEditRequest; -pub mod model_suite_create_edit; -pub use self::model_suite_create_edit::SuiteCreateEdit; -pub mod model_synthetics_suite; -pub use self::model_synthetics_suite::SyntheticsSuite; -pub mod model_synthetics_suite_options; -pub use self::model_synthetics_suite_options::SyntheticsSuiteOptions; -pub mod model_synthetics_suite_test; -pub use self::model_synthetics_suite_test::SyntheticsSuiteTest; -pub mod model_synthetics_suite_test_alerting_criticality; -pub use self::model_synthetics_suite_test_alerting_criticality::SyntheticsSuiteTestAlertingCriticality; -pub mod model_synthetics_suite_type; -pub use self::model_synthetics_suite_type::SyntheticsSuiteType; -pub mod model_synthetics_suite_types; -pub use self::model_synthetics_suite_types::SyntheticsSuiteTypes; -pub mod model_synthetics_suite_response; -pub use self::model_synthetics_suite_response::SyntheticsSuiteResponse; -pub mod model_synthetics_suite_response_data; -pub use self::model_synthetics_suite_response_data::SyntheticsSuiteResponseData; -pub mod model_deleted_suites_request_delete_request; -pub use self::model_deleted_suites_request_delete_request::DeletedSuitesRequestDeleteRequest; -pub mod model_deleted_suites_request_delete; -pub use self::model_deleted_suites_request_delete::DeletedSuitesRequestDelete; -pub mod model_deleted_suites_request_delete_attributes; -pub use self::model_deleted_suites_request_delete_attributes::DeletedSuitesRequestDeleteAttributes; -pub mod model_deleted_suites_request_type; -pub use self::model_deleted_suites_request_type::DeletedSuitesRequestType; -pub mod model_deleted_suites_response; -pub use self::model_deleted_suites_response::DeletedSuitesResponse; -pub mod model_deleted_suite_response_data; -pub use self::model_deleted_suite_response_data::DeletedSuiteResponseData; -pub mod model_deleted_suite_response_data_attributes; -pub use self::model_deleted_suite_response_data_attributes::DeletedSuiteResponseDataAttributes; -pub mod model_synthetics_suite_search_response; -pub use self::model_synthetics_suite_search_response::SyntheticsSuiteSearchResponse; -pub mod model_synthetics_suite_search_response_data; -pub use self::model_synthetics_suite_search_response_data::SyntheticsSuiteSearchResponseData; -pub mod model_synthetics_suite_search_response_data_attributes; -pub use self::model_synthetics_suite_search_response_data_attributes::SyntheticsSuiteSearchResponseDataAttributes; -pub mod model_suite_search_response_type; -pub use self::model_suite_search_response_type::SuiteSearchResponseType; pub mod model_global_variable_json_patch_request; pub use self::model_global_variable_json_patch_request::GlobalVariableJsonPatchRequest; pub mod model_global_variable_json_patch_request_data; diff --git a/src/datadogV2/model/model_deleted_suite_response_data.rs b/src/datadogV2/model/model_deleted_suite_response_data.rs deleted file mode 100644 index fc06c79dd..000000000 --- a/src/datadogV2/model/model_deleted_suite_response_data.rs +++ /dev/null @@ -1,149 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DeletedSuiteResponseData { - #[serde(rename = "attributes")] - pub attributes: Option, - #[serde(rename = "id")] - pub id: Option, - /// Type for the Synthetics suites responses, `suites`. - #[serde(rename = "type")] - pub type_: Option, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl DeletedSuiteResponseData { - pub fn new() -> DeletedSuiteResponseData { - DeletedSuiteResponseData { - attributes: None, - id: None, - type_: None, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn attributes( - mut self, - value: crate::datadogV2::model::DeletedSuiteResponseDataAttributes, - ) -> Self { - self.attributes = Some(value); - self - } - - pub fn id(mut self, value: String) -> Self { - self.id = Some(value); - self - } - - pub fn type_(mut self, value: crate::datadogV2::model::SyntheticsSuiteTypes) -> Self { - self.type_ = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl Default for DeletedSuiteResponseData { - fn default() -> Self { - Self::new() - } -} - -impl<'de> Deserialize<'de> for DeletedSuiteResponseData { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct DeletedSuiteResponseDataVisitor; - impl<'a> Visitor<'a> for DeletedSuiteResponseDataVisitor { - type Value = DeletedSuiteResponseData; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut attributes: Option< - crate::datadogV2::model::DeletedSuiteResponseDataAttributes, - > = None; - let mut id: Option = None; - let mut type_: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "attributes" => { - if v.is_null() { - continue; - } - attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "id" => { - if v.is_null() { - continue; - } - id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "type" => { - if v.is_null() { - continue; - } - type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _type_) = type_ { - match _type_ { - crate::datadogV2::model::SyntheticsSuiteTypes::UnparsedObject(_type_) => { - _unparsed = true; - }, - _ => {} - } - } - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - - let content = DeletedSuiteResponseData { - attributes, - id, - type_, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(DeletedSuiteResponseDataVisitor) - } -} diff --git a/src/datadogV2/model/model_deleted_suites_request_delete.rs b/src/datadogV2/model/model_deleted_suites_request_delete.rs deleted file mode 100644 index 229695259..000000000 --- a/src/datadogV2/model/model_deleted_suites_request_delete.rs +++ /dev/null @@ -1,134 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DeletedSuitesRequestDelete { - #[serde(rename = "attributes")] - pub attributes: crate::datadogV2::model::DeletedSuitesRequestDeleteAttributes, - #[serde(rename = "id")] - pub id: Option, - #[serde(rename = "type")] - pub type_: Option, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl DeletedSuitesRequestDelete { - pub fn new( - attributes: crate::datadogV2::model::DeletedSuitesRequestDeleteAttributes, - ) -> DeletedSuitesRequestDelete { - DeletedSuitesRequestDelete { - attributes, - id: None, - type_: None, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn id(mut self, value: String) -> Self { - self.id = Some(value); - self - } - - pub fn type_(mut self, value: crate::datadogV2::model::DeletedSuitesRequestType) -> Self { - self.type_ = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl<'de> Deserialize<'de> for DeletedSuitesRequestDelete { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct DeletedSuitesRequestDeleteVisitor; - impl<'a> Visitor<'a> for DeletedSuitesRequestDeleteVisitor { - type Value = DeletedSuitesRequestDelete; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut attributes: Option< - crate::datadogV2::model::DeletedSuitesRequestDeleteAttributes, - > = None; - let mut id: Option = None; - let mut type_: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "attributes" => { - attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "id" => { - if v.is_null() { - continue; - } - id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "type" => { - if v.is_null() { - continue; - } - type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _type_) = type_ { - match _type_ { - crate::datadogV2::model::DeletedSuitesRequestType::UnparsedObject(_type_) => { - _unparsed = true; - }, - _ => {} - } - } - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - let attributes = attributes.ok_or_else(|| M::Error::missing_field("attributes"))?; - - let content = DeletedSuitesRequestDelete { - attributes, - id, - type_, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(DeletedSuitesRequestDeleteVisitor) - } -} diff --git a/src/datadogV2/model/model_deleted_suites_request_delete_attributes.rs b/src/datadogV2/model/model_deleted_suites_request_delete_attributes.rs deleted file mode 100644 index 9d1770057..000000000 --- a/src/datadogV2/model/model_deleted_suites_request_delete_attributes.rs +++ /dev/null @@ -1,107 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DeletedSuitesRequestDeleteAttributes { - #[serde(rename = "force_delete_dependencies")] - pub force_delete_dependencies: Option, - #[serde(rename = "public_ids")] - pub public_ids: Vec, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl DeletedSuitesRequestDeleteAttributes { - pub fn new(public_ids: Vec) -> DeletedSuitesRequestDeleteAttributes { - DeletedSuitesRequestDeleteAttributes { - force_delete_dependencies: None, - public_ids, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn force_delete_dependencies(mut self, value: bool) -> Self { - self.force_delete_dependencies = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl<'de> Deserialize<'de> for DeletedSuitesRequestDeleteAttributes { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct DeletedSuitesRequestDeleteAttributesVisitor; - impl<'a> Visitor<'a> for DeletedSuitesRequestDeleteAttributesVisitor { - type Value = DeletedSuitesRequestDeleteAttributes; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut force_delete_dependencies: Option = None; - let mut public_ids: Option> = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "force_delete_dependencies" => { - if v.is_null() { - continue; - } - force_delete_dependencies = - Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "public_ids" => { - public_ids = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - let public_ids = public_ids.ok_or_else(|| M::Error::missing_field("public_ids"))?; - - let content = DeletedSuitesRequestDeleteAttributes { - force_delete_dependencies, - public_ids, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(DeletedSuitesRequestDeleteAttributesVisitor) - } -} diff --git a/src/datadogV2/model/model_deleted_suites_request_delete_request.rs b/src/datadogV2/model/model_deleted_suites_request_delete_request.rs deleted file mode 100644 index 23c522701..000000000 --- a/src/datadogV2/model/model_deleted_suites_request_delete_request.rs +++ /dev/null @@ -1,92 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DeletedSuitesRequestDeleteRequest { - #[serde(rename = "data")] - pub data: crate::datadogV2::model::DeletedSuitesRequestDelete, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl DeletedSuitesRequestDeleteRequest { - pub fn new( - data: crate::datadogV2::model::DeletedSuitesRequestDelete, - ) -> DeletedSuitesRequestDeleteRequest { - DeletedSuitesRequestDeleteRequest { - data, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl<'de> Deserialize<'de> for DeletedSuitesRequestDeleteRequest { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct DeletedSuitesRequestDeleteRequestVisitor; - impl<'a> Visitor<'a> for DeletedSuitesRequestDeleteRequestVisitor { - type Value = DeletedSuitesRequestDeleteRequest; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut data: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "data" => { - data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - let data = data.ok_or_else(|| M::Error::missing_field("data"))?; - - let content = DeletedSuitesRequestDeleteRequest { - data, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(DeletedSuitesRequestDeleteRequestVisitor) - } -} diff --git a/src/datadogV2/model/model_deleted_suites_request_type.rs b/src/datadogV2/model/model_deleted_suites_request_type.rs deleted file mode 100644 index dcbb0049a..000000000 --- a/src/datadogV2/model/model_deleted_suites_request_type.rs +++ /dev/null @@ -1,48 +0,0 @@ -// 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. - -use serde::{Deserialize, Deserializer, Serialize, Serializer}; - -#[non_exhaustive] -#[derive(Clone, Debug, Eq, PartialEq)] -pub enum DeletedSuitesRequestType { - DELETE_SUITES_REQUEST, - UnparsedObject(crate::datadog::UnparsedObject), -} - -impl ToString for DeletedSuitesRequestType { - fn to_string(&self) -> String { - match self { - Self::DELETE_SUITES_REQUEST => String::from("delete_suites_request"), - Self::UnparsedObject(v) => v.value.to_string(), - } - } -} - -impl Serialize for DeletedSuitesRequestType { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - match self { - Self::UnparsedObject(v) => v.serialize(serializer), - _ => serializer.serialize_str(self.to_string().as_str()), - } - } -} - -impl<'de> Deserialize<'de> for DeletedSuitesRequestType { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s: String = String::deserialize(deserializer)?; - Ok(match s.as_str() { - "delete_suites_request" => Self::DELETE_SUITES_REQUEST, - _ => Self::UnparsedObject(crate::datadog::UnparsedObject { - value: serde_json::Value::String(s.into()), - }), - }) - } -} diff --git a/src/datadogV2/model/model_deleted_suites_response.rs b/src/datadogV2/model/model_security_monitoring_paginated_suppressions_response.rs similarity index 57% rename from src/datadogV2/model/model_deleted_suites_response.rs rename to src/datadogV2/model/model_security_monitoring_paginated_suppressions_response.rs index ce22e83c6..88e56dfa0 100644 --- a/src/datadogV2/model/model_deleted_suites_response.rs +++ b/src/datadogV2/model/model_security_monitoring_paginated_suppressions_response.rs @@ -6,12 +6,17 @@ use serde::{Deserialize, Deserializer, Serialize}; use serde_with::skip_serializing_none; use std::fmt::{self, Formatter}; +/// Response object containing the available suppression rules with pagination metadata. #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DeletedSuitesResponse { +pub struct SecurityMonitoringPaginatedSuppressionsResponse { + /// A list of suppressions objects. #[serde(rename = "data")] - pub data: Option>, + pub data: Option>, + /// Metadata for the suppression list response. + #[serde(rename = "meta")] + pub meta: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -19,20 +24,32 @@ pub struct DeletedSuitesResponse { pub(crate) _unparsed: bool, } -impl DeletedSuitesResponse { - pub fn new() -> DeletedSuitesResponse { - DeletedSuitesResponse { +impl SecurityMonitoringPaginatedSuppressionsResponse { + pub fn new() -> SecurityMonitoringPaginatedSuppressionsResponse { + SecurityMonitoringPaginatedSuppressionsResponse { data: None, + meta: None, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } - pub fn data(mut self, value: Vec) -> Self { + pub fn data( + mut self, + value: Vec, + ) -> Self { self.data = Some(value); self } + pub fn meta( + mut self, + value: crate::datadogV2::model::SecurityMonitoringSuppressionsMeta, + ) -> Self { + self.meta = Some(value); + self + } + pub fn additional_properties( mut self, value: std::collections::BTreeMap, @@ -42,20 +59,20 @@ impl DeletedSuitesResponse { } } -impl Default for DeletedSuitesResponse { +impl Default for SecurityMonitoringPaginatedSuppressionsResponse { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for DeletedSuitesResponse { +impl<'de> Deserialize<'de> for SecurityMonitoringPaginatedSuppressionsResponse { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct DeletedSuitesResponseVisitor; - impl<'a> Visitor<'a> for DeletedSuitesResponseVisitor { - type Value = DeletedSuitesResponse; + struct SecurityMonitoringPaginatedSuppressionsResponseVisitor; + impl<'a> Visitor<'a> for SecurityMonitoringPaginatedSuppressionsResponseVisitor { + type Value = SecurityMonitoringPaginatedSuppressionsResponse; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -65,7 +82,10 @@ impl<'de> Deserialize<'de> for DeletedSuitesResponse { where M: MapAccess<'a>, { - let mut data: Option> = None; + let mut data: Option> = + None; + let mut meta: Option = + None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -80,6 +100,12 @@ impl<'de> Deserialize<'de> for DeletedSuitesResponse { } data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } + "meta" => { + if v.is_null() { + continue; + } + meta = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } &_ => { if let Ok(value) = serde_json::from_value(v.clone()) { additional_properties.insert(k, value); @@ -88,8 +114,9 @@ impl<'de> Deserialize<'de> for DeletedSuitesResponse { } } - let content = DeletedSuitesResponse { + let content = SecurityMonitoringPaginatedSuppressionsResponse { data, + meta, additional_properties, _unparsed, }; @@ -98,6 +125,6 @@ impl<'de> Deserialize<'de> for DeletedSuitesResponse { } } - deserializer.deserialize_any(DeletedSuitesResponseVisitor) + deserializer.deserialize_any(SecurityMonitoringPaginatedSuppressionsResponseVisitor) } } diff --git a/src/datadogV2/model/model_security_monitoring_rule_livetail_request.rs b/src/datadogV2/model/model_security_monitoring_rule_livetail_request.rs new file mode 100644 index 000000000..9f4ffc16e --- /dev/null +++ b/src/datadogV2/model/model_security_monitoring_rule_livetail_request.rs @@ -0,0 +1,220 @@ +// 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. +use serde::de::{Error, MapAccess, Visitor}; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::skip_serializing_none; +use std::fmt::{self, Formatter}; + +/// Request to preview a rule query with applied filters. +#[non_exhaustive] +#[skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize)] +pub struct SecurityMonitoringRuleLivetailRequest { + /// Data source for the query. + #[serde(rename = "dataSource")] + pub data_source: String, + /// The detection method. + #[serde(rename = "detectionMethod")] + pub detection_method: crate::datadogV2::model::SecurityMonitoringRuleDetectionMethod, + /// Fields to apply distinct on. + #[serde(rename = "distinctFields")] + pub distinct_fields: Option>, + /// Additional security filters to apply. + #[serde(rename = "filters")] + pub filters: Option>, + /// Fields to group by. + #[serde(rename = "groupByFields")] + pub group_by_fields: Option>, + /// The query to preview. + #[serde(rename = "query")] + pub query: String, + /// Index of the query in the rule. + #[serde(rename = "queryIndex")] + pub query_index: i32, + /// The rule type. + #[serde(rename = "type")] + pub type_: crate::datadogV2::model::SecurityMonitoringRuleTypeRead, + #[serde(flatten)] + pub additional_properties: std::collections::BTreeMap, + #[serde(skip)] + #[serde(default)] + pub(crate) _unparsed: bool, +} + +impl SecurityMonitoringRuleLivetailRequest { + pub fn new( + data_source: String, + detection_method: crate::datadogV2::model::SecurityMonitoringRuleDetectionMethod, + query: String, + query_index: i32, + type_: crate::datadogV2::model::SecurityMonitoringRuleTypeRead, + ) -> SecurityMonitoringRuleLivetailRequest { + SecurityMonitoringRuleLivetailRequest { + data_source, + detection_method, + distinct_fields: None, + filters: None, + group_by_fields: None, + query, + query_index, + type_, + additional_properties: std::collections::BTreeMap::new(), + _unparsed: false, + } + } + + pub fn distinct_fields(mut self, value: Vec) -> Self { + self.distinct_fields = Some(value); + self + } + + pub fn filters( + mut self, + value: Vec, + ) -> Self { + self.filters = Some(value); + self + } + + pub fn group_by_fields(mut self, value: Vec) -> Self { + self.group_by_fields = Some(value); + self + } + + pub fn additional_properties( + mut self, + value: std::collections::BTreeMap, + ) -> Self { + self.additional_properties = value; + self + } +} + +impl<'de> Deserialize<'de> for SecurityMonitoringRuleLivetailRequest { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct SecurityMonitoringRuleLivetailRequestVisitor; + impl<'a> Visitor<'a> for SecurityMonitoringRuleLivetailRequestVisitor { + type Value = SecurityMonitoringRuleLivetailRequest; + + fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.write_str("a mapping") + } + + fn visit_map(self, mut map: M) -> Result + where + M: MapAccess<'a>, + { + let mut data_source: Option = None; + let mut detection_method: Option< + crate::datadogV2::model::SecurityMonitoringRuleDetectionMethod, + > = None; + let mut distinct_fields: Option> = None; + let mut filters: Option> = + None; + let mut group_by_fields: Option> = None; + let mut query: Option = None; + let mut query_index: Option = None; + let mut type_: Option = + None; + let mut additional_properties: std::collections::BTreeMap< + String, + serde_json::Value, + > = std::collections::BTreeMap::new(); + let mut _unparsed = false; + + while let Some((k, v)) = map.next_entry::()? { + match k.as_str() { + "dataSource" => { + data_source = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "detectionMethod" => { + detection_method = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _detection_method) = detection_method { + match _detection_method { + crate::datadogV2::model::SecurityMonitoringRuleDetectionMethod::UnparsedObject(_detection_method) => { + _unparsed = true; + }, + _ => {} + } + } + } + "distinctFields" => { + if v.is_null() { + continue; + } + distinct_fields = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "filters" => { + if v.is_null() { + continue; + } + filters = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "groupByFields" => { + if v.is_null() { + continue; + } + group_by_fields = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "query" => { + query = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "queryIndex" => { + query_index = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "type" => { + type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + if let Some(ref _type_) = type_ { + match _type_ { + crate::datadogV2::model::SecurityMonitoringRuleTypeRead::UnparsedObject(_type_) => { + _unparsed = true; + }, + _ => {} + } + } + } + &_ => { + if let Ok(value) = serde_json::from_value(v.clone()) { + additional_properties.insert(k, value); + } + } + } + } + let data_source = + data_source.ok_or_else(|| M::Error::missing_field("data_source"))?; + let detection_method = + detection_method.ok_or_else(|| M::Error::missing_field("detection_method"))?; + let query = query.ok_or_else(|| M::Error::missing_field("query"))?; + let query_index = + query_index.ok_or_else(|| M::Error::missing_field("query_index"))?; + let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; + + let content = SecurityMonitoringRuleLivetailRequest { + data_source, + detection_method, + distinct_fields, + filters, + group_by_fields, + query, + query_index, + type_, + additional_properties, + _unparsed, + }; + + Ok(content) + } + } + + deserializer.deserialize_any(SecurityMonitoringRuleLivetailRequestVisitor) + } +} diff --git a/src/datadogV2/model/model_synthetics_suite_options.rs b/src/datadogV2/model/model_security_monitoring_rule_livetail_response.rs similarity index 66% rename from src/datadogV2/model/model_synthetics_suite_options.rs rename to src/datadogV2/model/model_security_monitoring_rule_livetail_response.rs index d1665c6b5..fc72d1d27 100644 --- a/src/datadogV2/model/model_synthetics_suite_options.rs +++ b/src/datadogV2/model/model_security_monitoring_rule_livetail_response.rs @@ -6,14 +6,14 @@ use serde::{Deserialize, Deserializer, Serialize}; use serde_with::skip_serializing_none; use std::fmt::{self, Formatter}; -/// Object describing the extra options for a Synthetic suite. +/// Response containing the modified query with applied filters. #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SyntheticsSuiteOptions { - /// Percentage of critical tests failure needed for a suite to fail. - #[serde(rename = "alerting_threshold")] - pub alerting_threshold: Option, +pub struct SecurityMonitoringRuleLivetailResponse { + /// The modified query with all filters applied. + #[serde(rename = "query")] + pub query: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -21,17 +21,17 @@ pub struct SyntheticsSuiteOptions { pub(crate) _unparsed: bool, } -impl SyntheticsSuiteOptions { - pub fn new() -> SyntheticsSuiteOptions { - SyntheticsSuiteOptions { - alerting_threshold: None, +impl SecurityMonitoringRuleLivetailResponse { + pub fn new() -> SecurityMonitoringRuleLivetailResponse { + SecurityMonitoringRuleLivetailResponse { + query: None, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } - pub fn alerting_threshold(mut self, value: f64) -> Self { - self.alerting_threshold = Some(value); + pub fn query(mut self, value: String) -> Self { + self.query = Some(value); self } @@ -44,20 +44,20 @@ impl SyntheticsSuiteOptions { } } -impl Default for SyntheticsSuiteOptions { +impl Default for SecurityMonitoringRuleLivetailResponse { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for SyntheticsSuiteOptions { +impl<'de> Deserialize<'de> for SecurityMonitoringRuleLivetailResponse { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct SyntheticsSuiteOptionsVisitor; - impl<'a> Visitor<'a> for SyntheticsSuiteOptionsVisitor { - type Value = SyntheticsSuiteOptions; + struct SecurityMonitoringRuleLivetailResponseVisitor; + impl<'a> Visitor<'a> for SecurityMonitoringRuleLivetailResponseVisitor { + type Value = SecurityMonitoringRuleLivetailResponse; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -67,7 +67,7 @@ impl<'de> Deserialize<'de> for SyntheticsSuiteOptions { where M: MapAccess<'a>, { - let mut alerting_threshold: Option = None; + let mut query: Option = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -76,12 +76,11 @@ impl<'de> Deserialize<'de> for SyntheticsSuiteOptions { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { - "alerting_threshold" => { + "query" => { if v.is_null() { continue; } - alerting_threshold = - Some(serde_json::from_value(v).map_err(M::Error::custom)?); + query = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } &_ => { if let Ok(value) = serde_json::from_value(v.clone()) { @@ -91,8 +90,8 @@ impl<'de> Deserialize<'de> for SyntheticsSuiteOptions { } } - let content = SyntheticsSuiteOptions { - alerting_threshold, + let content = SecurityMonitoringRuleLivetailResponse { + query, additional_properties, _unparsed, }; @@ -101,6 +100,6 @@ impl<'de> Deserialize<'de> for SyntheticsSuiteOptions { } } - deserializer.deserialize_any(SyntheticsSuiteOptionsVisitor) + deserializer.deserialize_any(SecurityMonitoringRuleLivetailResponseVisitor) } } diff --git a/src/datadogV2/model/model_security_monitoring_suppression_sort.rs b/src/datadogV2/model/model_security_monitoring_suppression_sort.rs new file mode 100644 index 000000000..529d20f95 --- /dev/null +++ b/src/datadogV2/model/model_security_monitoring_suppression_sort.rs @@ -0,0 +1,75 @@ +// 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. + +use serde::{Deserialize, Deserializer, Serialize, Serializer}; + +#[non_exhaustive] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum SecurityMonitoringSuppressionSort { + NAME, + START_DATE, + EXPIRATION_DATE, + UPDATE_DATE, + ENABLED, + NAME_DESCENDING, + START_DATE_DESCENDING, + EXPIRATION_DATE_DESCENDING, + UPDATE_DATE_DESCENDING, + ENABLED_DESCENDING, + UnparsedObject(crate::datadog::UnparsedObject), +} + +impl ToString for SecurityMonitoringSuppressionSort { + fn to_string(&self) -> String { + match self { + Self::NAME => String::from("name"), + Self::START_DATE => String::from("start_date"), + Self::EXPIRATION_DATE => String::from("expiration_date"), + Self::UPDATE_DATE => String::from("update_date"), + Self::ENABLED => String::from("enabled"), + Self::NAME_DESCENDING => String::from("-name"), + Self::START_DATE_DESCENDING => String::from("-start_date"), + Self::EXPIRATION_DATE_DESCENDING => String::from("-expiration_date"), + Self::UPDATE_DATE_DESCENDING => String::from("-update_date"), + Self::ENABLED_DESCENDING => String::from("-enabled"), + Self::UnparsedObject(v) => v.value.to_string(), + } + } +} + +impl Serialize for SecurityMonitoringSuppressionSort { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + match self { + Self::UnparsedObject(v) => v.serialize(serializer), + _ => serializer.serialize_str(self.to_string().as_str()), + } + } +} + +impl<'de> Deserialize<'de> for SecurityMonitoringSuppressionSort { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s: String = String::deserialize(deserializer)?; + Ok(match s.as_str() { + "name" => Self::NAME, + "start_date" => Self::START_DATE, + "expiration_date" => Self::EXPIRATION_DATE, + "update_date" => Self::UPDATE_DATE, + "enabled" => Self::ENABLED, + "-name" => Self::NAME_DESCENDING, + "-start_date" => Self::START_DATE_DESCENDING, + "-expiration_date" => Self::EXPIRATION_DATE_DESCENDING, + "-update_date" => Self::UPDATE_DATE_DESCENDING, + "-enabled" => Self::ENABLED_DESCENDING, + _ => Self::UnparsedObject(crate::datadog::UnparsedObject { + value: serde_json::Value::String(s.into()), + }), + }) + } +} diff --git a/src/datadogV2/model/model_synthetics_suite_search_response.rs b/src/datadogV2/model/model_security_monitoring_suppressions_meta.rs similarity index 65% rename from src/datadogV2/model/model_synthetics_suite_search_response.rs rename to src/datadogV2/model/model_security_monitoring_suppressions_meta.rs index d4f6169f5..6b672f420 100644 --- a/src/datadogV2/model/model_synthetics_suite_search_response.rs +++ b/src/datadogV2/model/model_security_monitoring_suppressions_meta.rs @@ -6,14 +6,14 @@ use serde::{Deserialize, Deserializer, Serialize}; use serde_with::skip_serializing_none; use std::fmt::{self, Formatter}; -/// Synthetics suite search response +/// Metadata for the suppression list response. #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SyntheticsSuiteSearchResponse { - /// Synthetics suite search response data - #[serde(rename = "data")] - pub data: Option, +pub struct SecurityMonitoringSuppressionsMeta { + /// Pagination metadata. + #[serde(rename = "page")] + pub page: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -21,20 +21,20 @@ pub struct SyntheticsSuiteSearchResponse { pub(crate) _unparsed: bool, } -impl SyntheticsSuiteSearchResponse { - pub fn new() -> SyntheticsSuiteSearchResponse { - SyntheticsSuiteSearchResponse { - data: None, +impl SecurityMonitoringSuppressionsMeta { + pub fn new() -> SecurityMonitoringSuppressionsMeta { + SecurityMonitoringSuppressionsMeta { + page: None, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } - pub fn data( + pub fn page( mut self, - value: crate::datadogV2::model::SyntheticsSuiteSearchResponseData, + value: crate::datadogV2::model::SecurityMonitoringSuppressionsPageMeta, ) -> Self { - self.data = Some(value); + self.page = Some(value); self } @@ -47,20 +47,20 @@ impl SyntheticsSuiteSearchResponse { } } -impl Default for SyntheticsSuiteSearchResponse { +impl Default for SecurityMonitoringSuppressionsMeta { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for SyntheticsSuiteSearchResponse { +impl<'de> Deserialize<'de> for SecurityMonitoringSuppressionsMeta { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct SyntheticsSuiteSearchResponseVisitor; - impl<'a> Visitor<'a> for SyntheticsSuiteSearchResponseVisitor { - type Value = SyntheticsSuiteSearchResponse; + struct SecurityMonitoringSuppressionsMetaVisitor; + impl<'a> Visitor<'a> for SecurityMonitoringSuppressionsMetaVisitor { + type Value = SecurityMonitoringSuppressionsMeta; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -70,8 +70,9 @@ impl<'de> Deserialize<'de> for SyntheticsSuiteSearchResponse { where M: MapAccess<'a>, { - let mut data: Option = - None; + let mut page: Option< + crate::datadogV2::model::SecurityMonitoringSuppressionsPageMeta, + > = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -80,11 +81,11 @@ impl<'de> Deserialize<'de> for SyntheticsSuiteSearchResponse { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { - "data" => { + "page" => { if v.is_null() { continue; } - data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + page = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } &_ => { if let Ok(value) = serde_json::from_value(v.clone()) { @@ -94,8 +95,8 @@ impl<'de> Deserialize<'de> for SyntheticsSuiteSearchResponse { } } - let content = SyntheticsSuiteSearchResponse { - data, + let content = SecurityMonitoringSuppressionsMeta { + page, additional_properties, _unparsed, }; @@ -104,6 +105,6 @@ impl<'de> Deserialize<'de> for SyntheticsSuiteSearchResponse { } } - deserializer.deserialize_any(SyntheticsSuiteSearchResponseVisitor) + deserializer.deserialize_any(SecurityMonitoringSuppressionsMetaVisitor) } } diff --git a/src/datadogV2/model/model_deleted_suite_response_data_attributes.rs b/src/datadogV2/model/model_security_monitoring_suppressions_page_meta.rs similarity index 53% rename from src/datadogV2/model/model_deleted_suite_response_data_attributes.rs rename to src/datadogV2/model/model_security_monitoring_suppressions_page_meta.rs index 4532e2654..dd484c678 100644 --- a/src/datadogV2/model/model_deleted_suite_response_data_attributes.rs +++ b/src/datadogV2/model/model_security_monitoring_suppressions_page_meta.rs @@ -6,16 +6,20 @@ use serde::{Deserialize, Deserializer, Serialize}; use serde_with::skip_serializing_none; use std::fmt::{self, Formatter}; +/// Pagination metadata. #[non_exhaustive] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Serialize)] -pub struct DeletedSuiteResponseDataAttributes { - /// Deletion timestamp of the Synthetic suite ID. - #[serde(rename = "deleted_at")] - pub deleted_at: Option, - /// The Synthetic suite ID deleted. - #[serde(rename = "public_id")] - pub public_id: Option, +pub struct SecurityMonitoringSuppressionsPageMeta { + /// Current page number. + #[serde(rename = "pageNumber")] + pub page_number: Option, + /// Current page size. + #[serde(rename = "pageSize")] + pub page_size: Option, + /// Total count of suppressions. + #[serde(rename = "totalCount")] + pub total_count: Option, #[serde(flatten)] pub additional_properties: std::collections::BTreeMap, #[serde(skip)] @@ -23,23 +27,29 @@ pub struct DeletedSuiteResponseDataAttributes { pub(crate) _unparsed: bool, } -impl DeletedSuiteResponseDataAttributes { - pub fn new() -> DeletedSuiteResponseDataAttributes { - DeletedSuiteResponseDataAttributes { - deleted_at: None, - public_id: None, +impl SecurityMonitoringSuppressionsPageMeta { + pub fn new() -> SecurityMonitoringSuppressionsPageMeta { + SecurityMonitoringSuppressionsPageMeta { + page_number: None, + page_size: None, + total_count: None, additional_properties: std::collections::BTreeMap::new(), _unparsed: false, } } - pub fn deleted_at(mut self, value: String) -> Self { - self.deleted_at = Some(value); + pub fn page_number(mut self, value: i64) -> Self { + self.page_number = Some(value); self } - pub fn public_id(mut self, value: String) -> Self { - self.public_id = Some(value); + pub fn page_size(mut self, value: i64) -> Self { + self.page_size = Some(value); + self + } + + pub fn total_count(mut self, value: i64) -> Self { + self.total_count = Some(value); self } @@ -52,20 +62,20 @@ impl DeletedSuiteResponseDataAttributes { } } -impl Default for DeletedSuiteResponseDataAttributes { +impl Default for SecurityMonitoringSuppressionsPageMeta { fn default() -> Self { Self::new() } } -impl<'de> Deserialize<'de> for DeletedSuiteResponseDataAttributes { +impl<'de> Deserialize<'de> for SecurityMonitoringSuppressionsPageMeta { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { - struct DeletedSuiteResponseDataAttributesVisitor; - impl<'a> Visitor<'a> for DeletedSuiteResponseDataAttributesVisitor { - type Value = DeletedSuiteResponseDataAttributes; + struct SecurityMonitoringSuppressionsPageMetaVisitor; + impl<'a> Visitor<'a> for SecurityMonitoringSuppressionsPageMetaVisitor { + type Value = SecurityMonitoringSuppressionsPageMeta; fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { f.write_str("a mapping") @@ -75,8 +85,9 @@ impl<'de> Deserialize<'de> for DeletedSuiteResponseDataAttributes { where M: MapAccess<'a>, { - let mut deleted_at: Option = None; - let mut public_id: Option = None; + let mut page_number: Option = None; + let mut page_size: Option = None; + let mut total_count: Option = None; let mut additional_properties: std::collections::BTreeMap< String, serde_json::Value, @@ -85,17 +96,25 @@ impl<'de> Deserialize<'de> for DeletedSuiteResponseDataAttributes { while let Some((k, v)) = map.next_entry::()? { match k.as_str() { - "deleted_at" => { + "pageNumber" => { + if v.is_null() { + continue; + } + page_number = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); + } + "pageSize" => { if v.is_null() { continue; } - deleted_at = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + page_size = Some(serde_json::from_value(v).map_err(M::Error::custom)?); } - "public_id" => { + "totalCount" => { if v.is_null() { continue; } - public_id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); + total_count = + Some(serde_json::from_value(v).map_err(M::Error::custom)?); } &_ => { if let Ok(value) = serde_json::from_value(v.clone()) { @@ -105,9 +124,10 @@ impl<'de> Deserialize<'de> for DeletedSuiteResponseDataAttributes { } } - let content = DeletedSuiteResponseDataAttributes { - deleted_at, - public_id, + let content = SecurityMonitoringSuppressionsPageMeta { + page_number, + page_size, + total_count, additional_properties, _unparsed, }; @@ -116,6 +136,6 @@ impl<'de> Deserialize<'de> for DeletedSuiteResponseDataAttributes { } } - deserializer.deserialize_any(DeletedSuiteResponseDataAttributesVisitor) + deserializer.deserialize_any(SecurityMonitoringSuppressionsPageMetaVisitor) } } diff --git a/src/datadogV2/model/model_suite_create_edit.rs b/src/datadogV2/model/model_suite_create_edit.rs deleted file mode 100644 index 3abf163c7..000000000 --- a/src/datadogV2/model/model_suite_create_edit.rs +++ /dev/null @@ -1,112 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SuiteCreateEdit { - /// Object containing details about a Synthetic suite. - #[serde(rename = "attributes")] - pub attributes: crate::datadogV2::model::SyntheticsSuite, - /// Type for the Synthetics suites responses, `suites`. - #[serde(rename = "type")] - pub type_: crate::datadogV2::model::SyntheticsSuiteTypes, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl SuiteCreateEdit { - pub fn new( - attributes: crate::datadogV2::model::SyntheticsSuite, - type_: crate::datadogV2::model::SyntheticsSuiteTypes, - ) -> SuiteCreateEdit { - SuiteCreateEdit { - attributes, - type_, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl<'de> Deserialize<'de> for SuiteCreateEdit { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct SuiteCreateEditVisitor; - impl<'a> Visitor<'a> for SuiteCreateEditVisitor { - type Value = SuiteCreateEdit; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut attributes: Option = None; - let mut type_: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "attributes" => { - attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "type" => { - type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _type_) = type_ { - match _type_ { - crate::datadogV2::model::SyntheticsSuiteTypes::UnparsedObject(_type_) => { - _unparsed = true; - }, - _ => {} - } - } - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - let attributes = attributes.ok_or_else(|| M::Error::missing_field("attributes"))?; - let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; - - let content = SuiteCreateEdit { - attributes, - type_, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(SuiteCreateEditVisitor) - } -} diff --git a/src/datadogV2/model/model_suite_create_edit_request.rs b/src/datadogV2/model/model_suite_create_edit_request.rs deleted file mode 100644 index 7cb61e581..000000000 --- a/src/datadogV2/model/model_suite_create_edit_request.rs +++ /dev/null @@ -1,90 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SuiteCreateEditRequest { - #[serde(rename = "data")] - pub data: crate::datadogV2::model::SuiteCreateEdit, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl SuiteCreateEditRequest { - pub fn new(data: crate::datadogV2::model::SuiteCreateEdit) -> SuiteCreateEditRequest { - SuiteCreateEditRequest { - data, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl<'de> Deserialize<'de> for SuiteCreateEditRequest { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct SuiteCreateEditRequestVisitor; - impl<'a> Visitor<'a> for SuiteCreateEditRequestVisitor { - type Value = SuiteCreateEditRequest; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut data: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "data" => { - data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - let data = data.ok_or_else(|| M::Error::missing_field("data"))?; - - let content = SuiteCreateEditRequest { - data, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(SuiteCreateEditRequestVisitor) - } -} diff --git a/src/datadogV2/model/model_suite_search_response_type.rs b/src/datadogV2/model/model_suite_search_response_type.rs deleted file mode 100644 index eb7c097cd..000000000 --- a/src/datadogV2/model/model_suite_search_response_type.rs +++ /dev/null @@ -1,48 +0,0 @@ -// 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. - -use serde::{Deserialize, Deserializer, Serialize, Serializer}; - -#[non_exhaustive] -#[derive(Clone, Debug, Eq, PartialEq)] -pub enum SuiteSearchResponseType { - SUITES_SEARCH, - UnparsedObject(crate::datadog::UnparsedObject), -} - -impl ToString for SuiteSearchResponseType { - fn to_string(&self) -> String { - match self { - Self::SUITES_SEARCH => String::from("suites_search"), - Self::UnparsedObject(v) => v.value.to_string(), - } - } -} - -impl Serialize for SuiteSearchResponseType { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - match self { - Self::UnparsedObject(v) => v.serialize(serializer), - _ => serializer.serialize_str(self.to_string().as_str()), - } - } -} - -impl<'de> Deserialize<'de> for SuiteSearchResponseType { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s: String = String::deserialize(deserializer)?; - Ok(match s.as_str() { - "suites_search" => Self::SUITES_SEARCH, - _ => Self::UnparsedObject(crate::datadog::UnparsedObject { - value: serde_json::Value::String(s.into()), - }), - }) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite.rs b/src/datadogV2/model/model_synthetics_suite.rs deleted file mode 100644 index 6d7b12b92..000000000 --- a/src/datadogV2/model/model_synthetics_suite.rs +++ /dev/null @@ -1,202 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -/// Object containing details about a Synthetic suite. -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SyntheticsSuite { - /// Notification message associated with the suite. - #[serde(rename = "message")] - pub message: Option, - /// The associated monitor ID. - #[serde(rename = "monitor_id")] - pub monitor_id: Option, - /// Name of the suite. - #[serde(rename = "name")] - pub name: String, - /// Object describing the extra options for a Synthetic suite. - #[serde(rename = "options")] - pub options: crate::datadogV2::model::SyntheticsSuiteOptions, - /// The public ID for the test. - #[serde(rename = "public_id")] - pub public_id: Option, - /// Array of tags attached to the suite. - #[serde(rename = "tags")] - pub tags: Option>, - #[serde(rename = "tests")] - pub tests: Vec, - /// Type of the Synthetic suite, `suite`. - #[serde(rename = "type")] - pub type_: crate::datadogV2::model::SyntheticsSuiteType, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl SyntheticsSuite { - pub fn new( - name: String, - options: crate::datadogV2::model::SyntheticsSuiteOptions, - tests: Vec, - type_: crate::datadogV2::model::SyntheticsSuiteType, - ) -> SyntheticsSuite { - SyntheticsSuite { - message: None, - monitor_id: None, - name, - options, - public_id: None, - tags: None, - tests, - type_, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn message(mut self, value: String) -> Self { - self.message = Some(value); - self - } - - pub fn monitor_id(mut self, value: i64) -> Self { - self.monitor_id = Some(value); - self - } - - pub fn public_id(mut self, value: String) -> Self { - self.public_id = Some(value); - self - } - - pub fn tags(mut self, value: Vec) -> Self { - self.tags = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuite { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct SyntheticsSuiteVisitor; - impl<'a> Visitor<'a> for SyntheticsSuiteVisitor { - type Value = SyntheticsSuite; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut message: Option = None; - let mut monitor_id: Option = None; - let mut name: Option = None; - let mut options: Option = None; - let mut public_id: Option = None; - let mut tags: Option> = None; - let mut tests: Option> = None; - let mut type_: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "message" => { - if v.is_null() { - continue; - } - message = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "monitor_id" => { - if v.is_null() { - continue; - } - monitor_id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "name" => { - name = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "options" => { - options = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "public_id" => { - if v.is_null() { - continue; - } - public_id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "tags" => { - if v.is_null() { - continue; - } - tags = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "tests" => { - tests = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "type" => { - type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _type_) = type_ { - match _type_ { - crate::datadogV2::model::SyntheticsSuiteType::UnparsedObject(_type_) => { - _unparsed = true; - }, - _ => {} - } - } - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - let name = name.ok_or_else(|| M::Error::missing_field("name"))?; - let options = options.ok_or_else(|| M::Error::missing_field("options"))?; - let tests = tests.ok_or_else(|| M::Error::missing_field("tests"))?; - let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?; - - let content = SyntheticsSuite { - message, - monitor_id, - name, - options, - public_id, - tags, - tests, - type_, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(SyntheticsSuiteVisitor) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite_response.rs b/src/datadogV2/model/model_synthetics_suite_response.rs deleted file mode 100644 index d641dcc77..000000000 --- a/src/datadogV2/model/model_synthetics_suite_response.rs +++ /dev/null @@ -1,105 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -/// Synthetics suite response -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SyntheticsSuiteResponse { - /// Synthetics suite response data - #[serde(rename = "data")] - pub data: Option, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl SyntheticsSuiteResponse { - pub fn new() -> SyntheticsSuiteResponse { - SyntheticsSuiteResponse { - data: None, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn data(mut self, value: crate::datadogV2::model::SyntheticsSuiteResponseData) -> Self { - self.data = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl Default for SyntheticsSuiteResponse { - fn default() -> Self { - Self::new() - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuiteResponse { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct SyntheticsSuiteResponseVisitor; - impl<'a> Visitor<'a> for SyntheticsSuiteResponseVisitor { - type Value = SyntheticsSuiteResponse; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut data: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "data" => { - if v.is_null() { - continue; - } - data = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - - let content = SyntheticsSuiteResponse { - data, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(SyntheticsSuiteResponseVisitor) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite_response_data.rs b/src/datadogV2/model/model_synthetics_suite_response_data.rs deleted file mode 100644 index a4ce1598d..000000000 --- a/src/datadogV2/model/model_synthetics_suite_response_data.rs +++ /dev/null @@ -1,147 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -/// Synthetics suite response data -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SyntheticsSuiteResponseData { - /// Object containing details about a Synthetic suite. - #[serde(rename = "attributes")] - pub attributes: Option, - /// The public ID for the suite. - #[serde(rename = "id")] - pub id: Option, - /// Type for the Synthetics suites responses, `suites`. - #[serde(rename = "type")] - pub type_: Option, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl SyntheticsSuiteResponseData { - pub fn new() -> SyntheticsSuiteResponseData { - SyntheticsSuiteResponseData { - attributes: None, - id: None, - type_: None, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn attributes(mut self, value: crate::datadogV2::model::SyntheticsSuite) -> Self { - self.attributes = Some(value); - self - } - - pub fn id(mut self, value: String) -> Self { - self.id = Some(value); - self - } - - pub fn type_(mut self, value: crate::datadogV2::model::SyntheticsSuiteTypes) -> Self { - self.type_ = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl Default for SyntheticsSuiteResponseData { - fn default() -> Self { - Self::new() - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuiteResponseData { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct SyntheticsSuiteResponseDataVisitor; - impl<'a> Visitor<'a> for SyntheticsSuiteResponseDataVisitor { - type Value = SyntheticsSuiteResponseData; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut attributes: Option = None; - let mut id: Option = None; - let mut type_: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "attributes" => { - if v.is_null() { - continue; - } - attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "id" => { - if v.is_null() { - continue; - } - id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "type" => { - if v.is_null() { - continue; - } - type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _type_) = type_ { - match _type_ { - crate::datadogV2::model::SyntheticsSuiteTypes::UnparsedObject(_type_) => { - _unparsed = true; - }, - _ => {} - } - } - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - - let content = SyntheticsSuiteResponseData { - attributes, - id, - type_, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(SyntheticsSuiteResponseDataVisitor) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite_search_response_data.rs b/src/datadogV2/model/model_synthetics_suite_search_response_data.rs deleted file mode 100644 index 3a7429851..000000000 --- a/src/datadogV2/model/model_synthetics_suite_search_response_data.rs +++ /dev/null @@ -1,150 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -/// Synthetics suite search response data -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SyntheticsSuiteSearchResponseData { - /// Synthetics suite search response data attributes - #[serde(rename = "attributes")] - pub attributes: Option, - #[serde(rename = "id")] - pub id: Option, - #[serde(rename = "type")] - pub type_: Option, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl SyntheticsSuiteSearchResponseData { - pub fn new() -> SyntheticsSuiteSearchResponseData { - SyntheticsSuiteSearchResponseData { - attributes: None, - id: None, - type_: None, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn attributes( - mut self, - value: crate::datadogV2::model::SyntheticsSuiteSearchResponseDataAttributes, - ) -> Self { - self.attributes = Some(value); - self - } - - pub fn id(mut self, value: uuid::Uuid) -> Self { - self.id = Some(value); - self - } - - pub fn type_(mut self, value: crate::datadogV2::model::SuiteSearchResponseType) -> Self { - self.type_ = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl Default for SyntheticsSuiteSearchResponseData { - fn default() -> Self { - Self::new() - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuiteSearchResponseData { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct SyntheticsSuiteSearchResponseDataVisitor; - impl<'a> Visitor<'a> for SyntheticsSuiteSearchResponseDataVisitor { - type Value = SyntheticsSuiteSearchResponseData; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut attributes: Option< - crate::datadogV2::model::SyntheticsSuiteSearchResponseDataAttributes, - > = None; - let mut id: Option = None; - let mut type_: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "attributes" => { - if v.is_null() { - continue; - } - attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "id" => { - if v.is_null() { - continue; - } - id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "type" => { - if v.is_null() { - continue; - } - type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _type_) = type_ { - match _type_ { - crate::datadogV2::model::SuiteSearchResponseType::UnparsedObject(_type_) => { - _unparsed = true; - }, - _ => {} - } - } - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - - let content = SyntheticsSuiteSearchResponseData { - attributes, - id, - type_, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(SyntheticsSuiteSearchResponseDataVisitor) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite_search_response_data_attributes.rs b/src/datadogV2/model/model_synthetics_suite_search_response_data_attributes.rs deleted file mode 100644 index 3e19f16b7..000000000 --- a/src/datadogV2/model/model_synthetics_suite_search_response_data_attributes.rs +++ /dev/null @@ -1,120 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -/// Synthetics suite search response data attributes -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SyntheticsSuiteSearchResponseDataAttributes { - #[serde(rename = "suites")] - pub suites: Option>, - #[serde(rename = "total")] - pub total: Option, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl SyntheticsSuiteSearchResponseDataAttributes { - pub fn new() -> SyntheticsSuiteSearchResponseDataAttributes { - SyntheticsSuiteSearchResponseDataAttributes { - suites: None, - total: None, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn suites(mut self, value: Vec) -> Self { - self.suites = Some(value); - self - } - - pub fn total(mut self, value: i32) -> Self { - self.total = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl Default for SyntheticsSuiteSearchResponseDataAttributes { - fn default() -> Self { - Self::new() - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuiteSearchResponseDataAttributes { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct SyntheticsSuiteSearchResponseDataAttributesVisitor; - impl<'a> Visitor<'a> for SyntheticsSuiteSearchResponseDataAttributesVisitor { - type Value = SyntheticsSuiteSearchResponseDataAttributes; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut suites: Option> = None; - let mut total: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "suites" => { - if v.is_null() { - continue; - } - suites = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - "total" => { - if v.is_null() { - continue; - } - total = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - - let content = SyntheticsSuiteSearchResponseDataAttributes { - suites, - total, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(SyntheticsSuiteSearchResponseDataAttributesVisitor) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite_test.rs b/src/datadogV2/model/model_synthetics_suite_test.rs deleted file mode 100644 index e1da92381..000000000 --- a/src/datadogV2/model/model_synthetics_suite_test.rs +++ /dev/null @@ -1,123 +0,0 @@ -// 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. -use serde::de::{Error, MapAccess, Visitor}; -use serde::{Deserialize, Deserializer, Serialize}; -use serde_with::skip_serializing_none; -use std::fmt::{self, Formatter}; - -/// Object containing details about a Synthetic test included in a Synthetic suite. -#[non_exhaustive] -#[skip_serializing_none] -#[derive(Clone, Debug, PartialEq, Serialize)] -pub struct SyntheticsSuiteTest { - /// Alerting criticality for each the test. - #[serde(rename = "alerting_criticality")] - pub alerting_criticality: - Option, - #[serde(rename = "public_id")] - pub public_id: String, - #[serde(flatten)] - pub additional_properties: std::collections::BTreeMap, - #[serde(skip)] - #[serde(default)] - pub(crate) _unparsed: bool, -} - -impl SyntheticsSuiteTest { - pub fn new(public_id: String) -> SyntheticsSuiteTest { - SyntheticsSuiteTest { - alerting_criticality: None, - public_id, - additional_properties: std::collections::BTreeMap::new(), - _unparsed: false, - } - } - - pub fn alerting_criticality( - mut self, - value: crate::datadogV2::model::SyntheticsSuiteTestAlertingCriticality, - ) -> Self { - self.alerting_criticality = Some(value); - self - } - - pub fn additional_properties( - mut self, - value: std::collections::BTreeMap, - ) -> Self { - self.additional_properties = value; - self - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuiteTest { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - struct SyntheticsSuiteTestVisitor; - impl<'a> Visitor<'a> for SyntheticsSuiteTestVisitor { - type Value = SyntheticsSuiteTest; - - fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result { - f.write_str("a mapping") - } - - fn visit_map(self, mut map: M) -> Result - where - M: MapAccess<'a>, - { - let mut alerting_criticality: Option< - crate::datadogV2::model::SyntheticsSuiteTestAlertingCriticality, - > = None; - let mut public_id: Option = None; - let mut additional_properties: std::collections::BTreeMap< - String, - serde_json::Value, - > = std::collections::BTreeMap::new(); - let mut _unparsed = false; - - while let Some((k, v)) = map.next_entry::()? { - match k.as_str() { - "alerting_criticality" => { - if v.is_null() { - continue; - } - alerting_criticality = - Some(serde_json::from_value(v).map_err(M::Error::custom)?); - if let Some(ref _alerting_criticality) = alerting_criticality { - match _alerting_criticality { - crate::datadogV2::model::SyntheticsSuiteTestAlertingCriticality::UnparsedObject(_alerting_criticality) => { - _unparsed = true; - }, - _ => {} - } - } - } - "public_id" => { - public_id = Some(serde_json::from_value(v).map_err(M::Error::custom)?); - } - &_ => { - if let Ok(value) = serde_json::from_value(v.clone()) { - additional_properties.insert(k, value); - } - } - } - } - let public_id = public_id.ok_or_else(|| M::Error::missing_field("public_id"))?; - - let content = SyntheticsSuiteTest { - alerting_criticality, - public_id, - additional_properties, - _unparsed, - }; - - Ok(content) - } - } - - deserializer.deserialize_any(SyntheticsSuiteTestVisitor) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite_test_alerting_criticality.rs b/src/datadogV2/model/model_synthetics_suite_test_alerting_criticality.rs deleted file mode 100644 index 997120048..000000000 --- a/src/datadogV2/model/model_synthetics_suite_test_alerting_criticality.rs +++ /dev/null @@ -1,51 +0,0 @@ -// 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. - -use serde::{Deserialize, Deserializer, Serialize, Serializer}; - -#[non_exhaustive] -#[derive(Clone, Debug, Eq, PartialEq)] -pub enum SyntheticsSuiteTestAlertingCriticality { - IGNORE, - CRITICAL, - UnparsedObject(crate::datadog::UnparsedObject), -} - -impl ToString for SyntheticsSuiteTestAlertingCriticality { - fn to_string(&self) -> String { - match self { - Self::IGNORE => String::from("ignore"), - Self::CRITICAL => String::from("critical"), - Self::UnparsedObject(v) => v.value.to_string(), - } - } -} - -impl Serialize for SyntheticsSuiteTestAlertingCriticality { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - match self { - Self::UnparsedObject(v) => v.serialize(serializer), - _ => serializer.serialize_str(self.to_string().as_str()), - } - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuiteTestAlertingCriticality { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s: String = String::deserialize(deserializer)?; - Ok(match s.as_str() { - "ignore" => Self::IGNORE, - "critical" => Self::CRITICAL, - _ => Self::UnparsedObject(crate::datadog::UnparsedObject { - value: serde_json::Value::String(s.into()), - }), - }) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite_type.rs b/src/datadogV2/model/model_synthetics_suite_type.rs deleted file mode 100644 index a75fd0e20..000000000 --- a/src/datadogV2/model/model_synthetics_suite_type.rs +++ /dev/null @@ -1,48 +0,0 @@ -// 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. - -use serde::{Deserialize, Deserializer, Serialize, Serializer}; - -#[non_exhaustive] -#[derive(Clone, Debug, Eq, PartialEq)] -pub enum SyntheticsSuiteType { - SUITE, - UnparsedObject(crate::datadog::UnparsedObject), -} - -impl ToString for SyntheticsSuiteType { - fn to_string(&self) -> String { - match self { - Self::SUITE => String::from("suite"), - Self::UnparsedObject(v) => v.value.to_string(), - } - } -} - -impl Serialize for SyntheticsSuiteType { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - match self { - Self::UnparsedObject(v) => v.serialize(serializer), - _ => serializer.serialize_str(self.to_string().as_str()), - } - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuiteType { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s: String = String::deserialize(deserializer)?; - Ok(match s.as_str() { - "suite" => Self::SUITE, - _ => Self::UnparsedObject(crate::datadog::UnparsedObject { - value: serde_json::Value::String(s.into()), - }), - }) - } -} diff --git a/src/datadogV2/model/model_synthetics_suite_types.rs b/src/datadogV2/model/model_synthetics_suite_types.rs deleted file mode 100644 index e91dab5c7..000000000 --- a/src/datadogV2/model/model_synthetics_suite_types.rs +++ /dev/null @@ -1,48 +0,0 @@ -// 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. - -use serde::{Deserialize, Deserializer, Serialize, Serializer}; - -#[non_exhaustive] -#[derive(Clone, Debug, Eq, PartialEq)] -pub enum SyntheticsSuiteTypes { - SUITES, - UnparsedObject(crate::datadog::UnparsedObject), -} - -impl ToString for SyntheticsSuiteTypes { - fn to_string(&self) -> String { - match self { - Self::SUITES => String::from("suites"), - Self::UnparsedObject(v) => v.value.to_string(), - } - } -} - -impl Serialize for SyntheticsSuiteTypes { - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - match self { - Self::UnparsedObject(v) => v.serialize(serializer), - _ => serializer.serialize_str(self.to_string().as_str()), - } - } -} - -impl<'de> Deserialize<'de> for SyntheticsSuiteTypes { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let s: String = String::deserialize(deserializer)?; - Ok(match s.as_str() { - "suites" => Self::SUITES, - _ => Self::UnparsedObject(crate::datadog::UnparsedObject { - value: serde_json::Value::String(s.into()), - }), - }) - } -} diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Delete-a-suppression-rule-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/security_monitoring/Delete-a-suppression-rule-returns-OK-response.frozen index 3f3e3c99f..ec35b8588 100644 --- a/tests/scenarios/cassettes/v2/security_monitoring/Delete-a-suppression-rule-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/security_monitoring/Delete-a-suppression-rule-returns-OK-response.frozen @@ -1 +1 @@ -2025-11-07T12:27:26.759Z \ No newline at end of file +2026-01-14T17:29:03.168Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Delete-a-suppression-rule-returns-OK-response.json b/tests/scenarios/cassettes/v2/security_monitoring/Delete-a-suppression-rule-returns-OK-response.json index 1999e443e..f6e58b5c4 100644 --- a/tests/scenarios/cassettes/v2/security_monitoring/Delete-a-suppression-rule-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/security_monitoring/Delete-a-suppression-rule-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Delete_a_suppression_rule_returns_OK_response-1762518446\",\"enabled\":true,\"name\":\"Test-Delete_a_suppression_rule_returns_OK_response-1762518446\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Delete_a_suppression_rule_returns_OK_response-1768411743\",\"enabled\":true,\"name\":\"suppression Test-Delete_a_suppression_rule_returns_OK_response-1768411743\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"uea-lab-big\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1762518447002,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Delete_a_suppression_rule_returns_OK_response-1762518446\",\"editable\":true,\"enabled\":true,\"name\":\"Test-Delete_a_suppression_rule_returns_OK_response-1762518446\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1762518447002,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", + "string": "{\"data\":{\"id\":\"itm-ljs-0qw\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768411744411,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Delete_a_suppression_rule_returns_OK_response-1768411743\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Delete_a_suppression_rule_returns_OK_response-1768411743\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768411744411,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:26 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:03 GMT" }, { "request": { @@ -43,7 +43,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/uea-lab-big" + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/itm-ljs-0qw" }, "response": { "body": { @@ -56,7 +56,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:26 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:03 GMT" }, { "request": { @@ -67,11 +67,11 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/uea-lab-big" + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/itm-ljs-0qw" }, "response": { "body": { - "string": "{\"errors\":[\"not_found(Suppression with ID uea-lab-big not found)\"]}", + "string": "{\"errors\":[\"not_found(Suppression with ID itm-ljs-0qw not found)\"]}", "encoding": null }, "headers": { @@ -84,7 +84,7 @@ "message": "Not Found" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:26 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:03 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-rule-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-rule-returns-OK-response.frozen index a93a4d20e..16f1a15ed 100644 --- a/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-rule-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-rule-returns-OK-response.frozen @@ -1 +1 @@ -2025-11-07T12:27:27.654Z \ No newline at end of file +2026-01-14T17:29:04.856Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-rule-returns-OK-response.json b/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-rule-returns-OK-response.json index da9029a76..77a102082 100644 --- a/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-rule-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-rule-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_a_suppression_rule_returns_OK_response-1762518447\",\"enabled\":true,\"name\":\"Test-Get_a_suppression_rule_returns_OK_response-1762518447\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_a_suppression_rule_returns_OK_response-1768411744\",\"enabled\":true,\"name\":\"suppression Test-Get_a_suppression_rule_returns_OK_response-1768411744\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"ylq-igi-icg\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1762518447901,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_a_suppression_rule_returns_OK_response-1762518447\",\"editable\":true,\"enabled\":true,\"name\":\"Test-Get_a_suppression_rule_returns_OK_response-1762518447\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1762518447901,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", + "string": "{\"data\":{\"id\":\"xno-kwg-8df\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768411744987,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_a_suppression_rule_returns_OK_response-1768411744\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_a_suppression_rule_returns_OK_response-1768411744\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768411744987,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:27 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:04 GMT" }, { "request": { @@ -43,11 +43,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/ylq-igi-icg" + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/xno-kwg-8df" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"ylq-igi-icg\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1762518447901,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_a_suppression_rule_returns_OK_response-1762518447\",\"editable\":true,\"enabled\":true,\"name\":\"Test-Get_a_suppression_rule_returns_OK_response-1762518447\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1762518447901,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", + "string": "{\"data\":{\"id\":\"xno-kwg-8df\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768411744987,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_a_suppression_rule_returns_OK_response-1768411744\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_a_suppression_rule_returns_OK_response-1768411744\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768411744987,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:27 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:04 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/ylq-igi-icg" + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/xno-kwg-8df" }, "response": { "body": { @@ -84,7 +84,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:27 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:04 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-s-version-history-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-s-version-history-returns-OK-response.frozen index d0d5ccec3..669132641 100644 --- a/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-s-version-history-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-s-version-history-returns-OK-response.frozen @@ -1 +1 @@ -2025-11-26T13:33:06.482Z \ No newline at end of file +2026-01-14T17:29:05.317Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-s-version-history-returns-OK-response.json b/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-s-version-history-returns-OK-response.json index 11848288d..c16474224 100644 --- a/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-s-version-history-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-a-suppression-s-version-history-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1764163986\",\"enabled\":true,\"name\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1764163986\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1768411745\",\"enabled\":true,\"name\":\"suppression Test-Get_a_suppression_s_version_history_returns_OK_response-1768411745\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"456-piv-74h\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1764163986851,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1764163986\",\"editable\":true,\"enabled\":true,\"name\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1764163986\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1764163986851,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}}", + "string": "{\"data\":{\"id\":\"sro-unv-k08\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768411745430,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1768411745\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_a_suppression_s_version_history_returns_OK_response-1768411745\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768411745430,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 26 Nov 2025 13:33:06 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:05 GMT" }, { "request": { @@ -43,11 +43,11 @@ ] }, "method": "get", - "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/456-piv-74h/version_history" + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/sro-unv-k08/version_history" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"456-piv-74h\",\"type\":\"suppression_version_history\",\"attributes\":{\"count\":1,\"data\":{\"1\":{\"suppression\":{\"id\":\"456-piv-74h\",\"name\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1764163986\",\"enabled\":true,\"description\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1764163986\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"data_exclusion_query\":\"\",\"version\":1,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"creation_date\":1764163986851,\"update_date\":1764163986851,\"editable\":true,\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"]},\"changes\":[]}}}}}", + "string": "{\"data\":{\"id\":\"sro-unv-k08\",\"type\":\"suppression_version_history\",\"attributes\":{\"count\":1,\"data\":{\"1\":{\"suppression\":{\"id\":\"sro-unv-k08\",\"name\":\"suppression Test-Get_a_suppression_s_version_history_returns_OK_response-1768411745\",\"enabled\":true,\"description\":\"Test-Get_a_suppression_s_version_history_returns_OK_response-1768411745\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"data_exclusion_query\":\"\",\"version\":1,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"creation_date\":1768411745430,\"update_date\":1768411745430,\"editable\":true,\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"]},\"changes\":[]}}}}}", "encoding": null }, "headers": { @@ -60,7 +60,7 @@ "message": "OK" } }, - "recorded_at": "Wed, 26 Nov 2025 13:33:06 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:05 GMT" }, { "request": { @@ -71,7 +71,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/456-piv-74h" + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/sro-unv-k08" }, "response": { "body": { @@ -84,7 +84,7 @@ "message": "No Content" } }, - "recorded_at": "Wed, 26 Nov 2025 13:33:06 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:05 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-pagination.frozen b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-pagination.frozen new file mode 100644 index 000000000..23cdf460d --- /dev/null +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-pagination.frozen @@ -0,0 +1 @@ +2026-01-14T17:12:28.523Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-pagination.json b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-pagination.json new file mode 100644 index 000000000..53637efdd --- /dev/null +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-pagination.json @@ -0,0 +1,149 @@ +{ + "http_interactions": [ + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"fgz-hyr-ibu\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410748883,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410748883,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:28 GMT" + }, + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"enabled\":true,\"name\":\"suppression2 Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"lgh-7no-380\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410749324,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"editable\":true,\"enabled\":true,\"name\":\"suppression2 Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410749324,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:28 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "application/json" + ] + }, + "method": "get", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions?page%5Bsize%5D=1&page%5Bnumber%5D=0&query=id%3Afgz-hyr-ibu%20OR%20id%3Algh-7no-380" + }, + "response": { + "body": { + "string": "{\"data\":[{\"id\":\"fgz-hyr-ibu\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410748883,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_pagination-1768410748\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410748883,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}],\"meta\":{\"page\":{\"totalCount\":2,\"pageSize\":1,\"pageNumber\":0}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:28 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/lgh-7no-380" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:28 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/fgz-hyr-ibu" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:28 GMT" + } + ], + "recorded_with": "VCR 6.0.0" +} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-ascending.frozen b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-ascending.frozen new file mode 100644 index 000000000..89bfc8cd8 --- /dev/null +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-ascending.frozen @@ -0,0 +1 @@ +2026-01-14T17:12:30.925Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-ascending.json b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-ascending.json new file mode 100644 index 000000000..1373d263b --- /dev/null +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-ascending.json @@ -0,0 +1,149 @@ +{ + "http_interactions": [ + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"5cq-vnw-eza\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410751276,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410751276,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:30 GMT" + }, + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"enabled\":true,\"name\":\"suppression2 Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"fuu-xxd-kjd\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410751710,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"editable\":true,\"enabled\":true,\"name\":\"suppression2 Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410751710,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:30 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "application/json" + ] + }, + "method": "get", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions?sort=name&query=id%3A5cq-vnw-eza%20OR%20id%3Afuu-xxd-kjd" + }, + "response": { + "body": { + "string": "{\"data\":[{\"id\":\"5cq-vnw-eza\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410751276,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410751276,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}},{\"id\":\"fuu-xxd-kjd\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410751710,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"editable\":true,\"enabled\":true,\"name\":\"suppression2 Test-Get_all_suppression_rules_returns_OK_response_with_sort_ascending-1768410750\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410751710,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}],\"meta\":{\"page\":{\"totalCount\":2,\"pageSize\":2,\"pageNumber\":0}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:30 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/fuu-xxd-kjd" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:30 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/5cq-vnw-eza" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:30 GMT" + } + ], + "recorded_with": "VCR 6.0.0" +} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-descending.frozen b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-descending.frozen new file mode 100644 index 000000000..d184a46ea --- /dev/null +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-descending.frozen @@ -0,0 +1 @@ +2026-01-14T17:12:33.088Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-descending.json b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-descending.json new file mode 100644 index 000000000..9c528f080 --- /dev/null +++ b/tests/scenarios/cassettes/v2/security_monitoring/Get-all-suppression-rules-returns-OK-response-with-sort-descending.json @@ -0,0 +1,149 @@ +{ + "http_interactions": [ + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"osw-qyf-tqn\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410753455,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410753455,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:33 GMT" + }, + { + "request": { + "body": { + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"enabled\":true,\"name\":\"suppression2 Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions" + }, + "response": { + "body": { + "string": "{\"data\":{\"id\":\"pe9-gdi-ee2\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410753872,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"editable\":true,\"enabled\":true,\"name\":\"suppression2 Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410753872,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:33 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "application/json" + ] + }, + "method": "get", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions?sort=-name&query=id%3Aosw-qyf-tqn%20OR%20id%3Ape9-gdi-ee2" + }, + "response": { + "body": { + "string": "{\"data\":[{\"id\":\"pe9-gdi-ee2\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410753872,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"editable\":true,\"enabled\":true,\"name\":\"suppression2 Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410753872,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}},{\"id\":\"osw-qyf-tqn\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768410753455,\"creator\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Get_all_suppression_rules_returns_OK_response_with_sort_descending-1768410753\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768410753455,\"updater\":{\"handle\":\"frog@datadoghq.com\",\"name\":\"frog\"},\"version\":1}}],\"meta\":{\"page\":{\"totalCount\":2,\"pageSize\":2,\"pageNumber\":0}}}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:33 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/pe9-gdi-ee2" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:33 GMT" + }, + { + "request": { + "body": "", + "headers": { + "Accept": [ + "*/*" + ] + }, + "method": "delete", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/osw-qyf-tqn" + }, + "response": { + "body": { + "string": "", + "encoding": null + }, + "headers": {}, + "status": { + "code": 204, + "message": "No Content" + } + }, + "recorded_at": "Wed, 14 Jan 2026 17:12:33 GMT" + } + ], + "recorded_with": "VCR 6.0.0" +} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Preview-a-rule-query-with-applied-filters-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/security_monitoring/Preview-a-rule-query-with-applied-filters-returns-OK-response.frozen new file mode 100644 index 000000000..77009f7c0 --- /dev/null +++ b/tests/scenarios/cassettes/v2/security_monitoring/Preview-a-rule-query-with-applied-filters-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-01-20T10:27:51.146Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Preview-a-rule-query-with-applied-filters-returns-OK-response.json b/tests/scenarios/cassettes/v2/security_monitoring/Preview-a-rule-query-with-applied-filters-returns-OK-response.json new file mode 100644 index 000000000..7bbd9f3d6 --- /dev/null +++ b/tests/scenarios/cassettes/v2/security_monitoring/Preview-a-rule-query-with-applied-filters-returns-OK-response.json @@ -0,0 +1,39 @@ +{ + "http_interactions": [ + { + "request": { + "body": { + "string": "{\"dataSource\":\"logs\",\"detectionMethod\":\"threshold\",\"distinctFields\":[],\"filters\":[],\"groupByFields\":[],\"query\":\"source:cloudtrail\",\"queryIndex\":0,\"type\":\"log_detection\"}", + "encoding": null + }, + "headers": { + "Accept": [ + "application/json" + ], + "Content-Type": [ + "application/json" + ] + }, + "method": "post", + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/livetail" + }, + "response": { + "body": { + "string": "{\"query\":\"source:cloudtrail ((*) OR (service:api -(source:staging)) OR (acceptance rule triggered -(does not really match much) -(neither does it)) OR (ayayay query -(does not really match much) -(neither does it)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1631884327 -(source:staging)) OR (service:TestDeleteasecurityfilterreturnsNoContentresponse1631884338 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1631884338 -(source:staging)) OR (service:TestDeleteasecurityfilterreturnsNoContentresponse1631884454 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1631884464 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1631884465 -(source:staging)) OR (service:TestDeleteasecurityfilterreturnsNoContentresponse1631884670 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1631884674 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1631884674 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1631884714 -(source:staging)) OR (service:TestDeleteasecurityfilterreturnsNoContentresponse1631884715 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1631884725 -(source:staging)) OR (service:TestPythonDeleteasecurityfilterreturnsNoContentresponse1631886017 -(source:staging)) OR (service:TestPythonGetasecurityfilterreturnsOKresponse1631886029 -(source:staging)) OR (service:TestPythonUpdateasecurityfilterreturnsOKresponse1631886034 -(source:staging)) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632817310 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632817310 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632817311) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632820231 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632820231 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632820232) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632820436 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632820437 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632820438) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632821203 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632821205 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632821205) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632821494 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632821495 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632821495) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632824855 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632824856 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632824857) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632826434 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632826436 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632826436) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632827408 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632827409 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632827410) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632828993 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632828993 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632828994) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632832892 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632832892 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632832893) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632833158 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632833159 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632833159) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632836449 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632836451 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632836452) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632839530 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632839530 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632839530) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632839555 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632839556 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632839557) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632839754 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632839755 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632839755) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632841163 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632841164 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632841165) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632842479 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632842482 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632842482) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632843068 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632843069 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632843069) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632844019 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632844020 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632844021) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632844135 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632844135 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632844135) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632846637 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632846638 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632846639) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632847599 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632847600 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632847601) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632848092 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632848094 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632848095) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632848450 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632848451 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632848451) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632848885 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632848885 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632848886) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632849681 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632849683 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632849684) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632849896 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632849897 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632849898) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632851126 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632851127 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632851128) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632888517 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632888518 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632888518) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632898979 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632898980 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632898980) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632899193 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632899194 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632899194) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632902893 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632902894 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632902894) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632903483 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632903484 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632903485) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632904028 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632904028 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632904029) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632907319 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632907320 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632907320) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632907341 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632907342 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632907342) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632908400 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632908401 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632908402) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632909893 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632909895 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632909896) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632910740 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632910741 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632910742) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632913811 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632913813 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632913814) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632918181 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632918181 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632918182) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632919352 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632919352 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632919353) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632919567 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632919568 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632919568) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632921868 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632921868 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632921869) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632922202 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632922203 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632922203) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632928250 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632928250 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632928251) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632933845 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632933846 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632933847) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632974965 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632974966 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632974966) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632986086 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632986087 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632986087) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632989757 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632989758 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632989758) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1632997311 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1632997312 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1632997312) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1633000142 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1633000144 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1633000145) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1633003795 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1633003796 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1633003797) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1633004068 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1633004069 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1633004069) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1633006704 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1633006704 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1633006705) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1633007542 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1633007542 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1633007543) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1633011104 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1633011105 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1633011105) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1633011244 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1633011246 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1633011247) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1633015449 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1633015451 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1633015452) OR (service:TestRubyGetasecurityfilterreturnsOKresponse1634150224 -(source:staging)) OR (service:TestPythonGetasecurityfilterreturnsOKresponse1635496812 -(source:staging)) OR (service:TestGoGetasecurityfilterreturnsOKresponse1636410254 -(source:staging)) OR (service:TestCreateasecurityfilterreturnsOKresponse1637063344 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1637063346 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1637063347) OR (service:TestCreateasecurityfilterreturnsOKresponse1637070528 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1637070533 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1637070535) OR (service:TestCreateasecurityfilterreturnsOKresponse1637077967 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1637077969 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1637077970) OR (service:TestCreateasecurityfilterreturnsOKresponse1637078478 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1637078481 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1637078482) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1637089241 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1620751633 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1620751634) OR (service:TestCreateasecurityfilterreturnsOKresponse1637141213 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1637141215 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1637141217) OR (service:TestRubyGetasecurityfilterreturnsOKresponse1637834808 -(source:staging)) OR (service:TestPythonGetasecurityfilterreturnsOKresponse1638987050 -(source:staging)) OR (service:TestPythonDeleteasecurityfilterreturnsNoContentresponse1638987054 -(source:staging)) OR (service:TestPythonUpdateasecurityfilterreturnsOKresponse1638987055 -(source:staging)) OR (service:TestPythonCreateasecurityfilterreturnsOKresponse1638987057 -(source:staging)) OR (service:TestPythonDeleteasecurityfilterreturnsNoContentresponse1639574360 -(source:staging)) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1640111630 -(source:staging)) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1640112776 -(source:staging)) OR (service:TestCreateasecurityfilterreturnsOKresponse1640112926 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1641598933 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1642578134 -(source:staging)) OR (service:TestExampleGetasecurityfilterreturnsOKresponse1642733138 -(source:staging)) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1642756664 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1642756664 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1642756664 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1642756664 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1643209589) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1643950965) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1644339764 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1644382966 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1644656566 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1644685366 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1645102964) OR (service:ExampleGetasecurityfilterreturnsOKresponse1645131764 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1645534965) OR (service:ExampleGetasecurityfilterreturnsOKresponse1645664565 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1647162167) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1647651765 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1647954164) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1648170165 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1648270965 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1648314166 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1648501364 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1648501364) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1648587764) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1648818166 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1648832565 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1648990964) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1649120564) OR (service:ExampleGetasecurityfilterreturnsOKresponse1649192564 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1649667764 -(source:staging)) OR (service:TestDeleteasecurityfilterreturnsNoContentresponse1649928918 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1650243764 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1650358964) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1650531764) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1651410164) OR (service:ExampleGetasecurityfilterreturnsOKresponse1651597364 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1651654964 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1651867320 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1651912576 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1651915972 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1651943585 -(source:staging)) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1651997988 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1651997988 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1651997989 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1651997990) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1652008989 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1656001148 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1656001148) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1656001150 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1657253948 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1657469948 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1657599548) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1657887548) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1658175548) OR (first query -(does not really match much) -(neither does it)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1658636349) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1658909949) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1659140350 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1660119548 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1665706600 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1665706784 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1673744048 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1673830447) OR (service:ExampleGetasecurityfilterreturnsOKresponse1674233647 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1674291247) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1674780847) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1675400048) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1675932846) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1675932848 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1675976048 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1675990446) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1675990448 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676033647 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676048047 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1676062448 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676134446 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676148847 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1676177646) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676206447 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676264047 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676321647 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676350447 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676451247 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676465647 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676480047 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676508846 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676537646 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676552047 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676566446 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1676595246) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676624046 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676667247 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676710446 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676724847 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676753647 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676782447 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676796846 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676825647 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676840047 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676854447 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676883247 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676897647 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1676969647 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1677185646) OR (service:ExampleGetasecurityfilterreturnsOKresponse1677300847 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1677545647 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1677560046) OR (service:ExampleGetasecurityfilterreturnsOKresponse1677588847 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1677603246) OR (service:ExampleGetasecurityfilterreturnsOKresponse1677632047 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1677675246) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1677689648 -(source:staging)) OR (service:TestCreateasecurityfilterreturnsOKresponse1677856599 -(source:staging)) OR (service:TestDeleteasecurityfilterreturnsNoContentresponse1677856599 -(source:staging)) OR (service:TestGetasecurityfilterreturnsOKresponse1677856602 -(source:staging)) OR (service:TestUpdateasecurityfilterreturnsOKresponse1677856604 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1678217608 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1678260806 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1678260809 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1678260812 -(source:staging)) OR (service:ExampleDeleteasecurityfilterreturnsNoContentresponse1678265641 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1678275206 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1678275208 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1678275211 -(source:staging)) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1678275624 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1678275639 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1678275700 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1678275746 -(source:staging)) OR (first query - tf-TestAccDatadogSecurityMonitoringFilter-local-1678277734 -(does not really match much) -(neither does it)) OR (service:ExampleDeleteasecurityfilterreturnsNoContentresponse1678280041 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1678491211 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1678750408 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1679009608 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1679038409 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1679182409 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1679196808 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1679240011) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1679598830) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1679598832 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1679699629) OR (service:ExampleGetasecurityfilterreturnsOKresponse1679757229 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1679771627 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1679872429 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1679973228 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1679987628 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680102828 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680218028 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1680246830) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680290028 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1680290029) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1680304427 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1680390827 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680405229 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680448429 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680462829 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680506029 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680520429 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680549229 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680678829 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1680707628 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1680722030) OR (service:ExampleGetasecurityfilterreturnsOKresponse1680736428 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681024430 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681067629 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681096428 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1681139627 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1681139629) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1681154028 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681154028 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1681182827 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681211629 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1681211630) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1681283630) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681355628 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1681370030) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1681442027 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681470829 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681643629 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1681744427 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1681787628 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1681830830) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681917229 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681946029 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1681989229 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682003630 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682018029 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682104428 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682118828 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682133229 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1682133230) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1682162030) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1682363630) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682406829 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1682493230) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682536428 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682637229 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1682666030) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682680428 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1682694828 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1682709228 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682738029 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1682795630) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682838829 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1682853227 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1682910830) OR (service:ExampleGetasecurityfilterreturnsOKresponse1682997229 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1683011628 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1683026029) OR (service:ExampleGetasecurityfilterreturnsOKresponse1683040430 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1683083628 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1683112430 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1683141227 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1683141228 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1683213228 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1683227627 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1683242027 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1683285229 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1683342830) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1683414830) OR (service:ExampleGetasecurityfilterreturnsOKresponse1683472429 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1683544429 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1683602030) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1683717230) OR (service:ExampleGetasecurityfilterreturnsOKresponse1683789229 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1684949513) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1685050313 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1685266312 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1685871113) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1685885513) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1686231113 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1687023112 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1687123912 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1687181511 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1687616375 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1687872712 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1688463111 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1688794314 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1688837512 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1688851913 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1688866312) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1689010313) OR (service:ExampleGetasecurityfilterreturnsOKresponse1689039107 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1689067913 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1689096713 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1689183111 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1689370313) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1689399113) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1689456711 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1689672713 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1689903114 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1690075912 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1690162312 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1690248713 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1690320714 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1690392712 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1690551112 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1690637513) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1690925512 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1690954313) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1690968713 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1691127113) OR (service:ExampleGetasecurityfilterreturnsOKresponse1691242311 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1691256712) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1691328713 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1691602313 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1691717511 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1691890312 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1692595914 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1696660266) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1696919467) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1697553067) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1697711468) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1698013866) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1698042667) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1698085866) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1698301867) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1698330668) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1698561066) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1698690667) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1699137068) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1700029869) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1700116266) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1700562668) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1700908267) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1700937067) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1701138667) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1701268267) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1701325866) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1701383468) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1701426667) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1701484267) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1702218668) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1702506666) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1702578666) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1702764209) OR (service:ExampleGetasecurityfilterreturnsOKresponse1702764222 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1702807409) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1702850623 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1702908224 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1702922609) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1703081023 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1703153022 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1703268222 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1703325822 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1703383422 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1703412209) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1703513009) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1703757823 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1703786621 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1703844222 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1703873022 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1703887409) OR (service:ExampleGetasecurityfilterreturnsOKresponse1704103421 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1704189822 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1704333822 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1704477809) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1704535422 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1704737022 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1704765822 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1704823421 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1704837822 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1704924222 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1705039410) OR (service:ExampleGetasecurityfilterreturnsOKresponse1705039421 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1705111410) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1705226609) OR (service:ExampleGetasecurityfilterreturnsOKresponse1705241022 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1705327422 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1705356223 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1705385009) OR (service:ExampleGetasecurityfilterreturnsOKresponse1705428220 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1705485810) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1705485821 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1705543421 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1705557809) OR (service:ExampleGetasecurityfilterreturnsOKresponse1705586621 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1705658610) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1705802622 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1705817023 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706061823 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1706133809) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706162621 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706249021 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706335422 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706349822 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706436222 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706465022 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706479422 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706522623 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706565822 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706637822 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1706666624 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1706681010) OR (service:ExampleGetasecurityfilterreturnsOKresponse1706695421 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1706810620 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1706882609) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1706897009) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1706925810) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1706969009) OR (service:ExampleGetasecurityfilterreturnsOKresponse1706983421 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1707084221 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1707127422 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1707228221 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1707257021 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1707357822 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1707559422 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1707573821 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1707588209) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1707588222 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1707631422 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1707645821 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1707660221 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1707717821 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1707746622 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1707833022 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1707890623 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1708020221 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1708106621 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1708236209) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1708236222 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1708250609) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1708279409) OR (service:ExampleGetasecurityfilterreturnsOKresponse1708279421 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1708337023 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1708351423 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1708466623 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1708509821 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1708581823 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1708653810) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1708653822 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1708869809) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1709013822 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1709042622 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1709071410) OR (service:ExampleGetasecurityfilterreturnsOKresponse1709143421 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1709157821 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1709201023 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1709215423 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1709229822 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1709330623 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1709345021 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1709517821 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1709546622 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1709690623 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1709719422 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1709762621 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1709906610) OR (service:ExampleGetasecurityfilterreturnsOKresponse1709949822 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710007424 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710021822 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710209023 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710237822 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1710353021 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710381821 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1710410609) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1710468209) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710468223 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1710612221 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1710669821 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710756222 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710914622 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1710986622 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1711001009) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1711101823 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711274621 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1711289009) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1711317810) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1711332222 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711346620 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711375422 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711418621 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1711447422 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1711461824 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1711476222 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711505021 -(source:staging)) OR (service:TestCreateasecurityfilterreturnsOKresponse1711550926 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1711577009) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711577021 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711605821 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1711620209) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1711749809) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1711793009) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1711793022 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711807421 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711865021 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1711879408) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1711879422 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1711922621 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1712023421 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1712052221 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712196222 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1712210621 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1712253822 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1712311420 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1712325821 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712340223 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712383421 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1712455409) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712484224 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1712570609) OR (service:ExampleGetasecurityfilterreturnsOKresponse1712613821 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712642622 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712757823 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1712786623 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712887422 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712916221 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1712973821 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1713261823 -(source:staging)) OR (service:TestRubyUpdateasecurityfilterreturnsOKresponse1714184527) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1714702913 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1715134934 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1718403715 -(source:staging)) OR (first query - tf-TestAccDatadogSecurityMonitoringFilter-local-1729815620 -(does not really match much) -(neither does it)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1736850556 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1737245916 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1758843453 -(source:staging)) OR (service:ExampleDeleteasecurityfilterreturnsNoContentresponse1758843477 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1758843507 -(source:staging)) OR (first query - tf-TestAccDatadogSecurityMonitoringFilter-local-1758846296 -(does not really match much) -(neither does it)) OR (service:TestGoCreateasecurityfilterreturnsOKresponse1758847622 -(source:staging)) OR (service:TestGoDeleteasecurityfilterreturnsNoContentresponse1758847623 -(source:staging)) OR (service:TestGoGetasecurityfilterreturnsOKresponse1758847634 -(source:staging)) OR (service:TestGoUpdateasecurityfilterreturnsOKresponse1758847653 -(source:staging)) OR (service:TestRubyCreateasecurityfilterreturnsOKresponse1758854218 -(source:staging)) OR (service:TestRubyCreateasecurityfilterreturnsOKresponse1758854219 -(source:staging)) OR (service:TestRubyCreateasecurityfilterreturnsOKresponse1758854220 -(source:staging)) OR (service:TestRubyDeleteasecurityfilterreturnsNoContentresponse1758854222 -(source:staging)) OR (service:TestRubyDeleteasecurityfilterreturnsNoContentresponse1758854223 -(source:staging)) OR (service:TestRubyDeleteasecurityfilterreturnsNoContentresponse1758854224 -(source:staging)) OR (service:TestRubyGetasecurityfilterreturnsOKresponse1758854242 -(source:staging)) OR (service:TestRubyGetasecurityfilterreturnsOKresponse1758854243 -(source:staging)) OR (service:TestRubyGetasecurityfilterreturnsOKresponse1758854244 -(source:staging)) OR (service:TestRubyUpdateasecurityfilterreturnsOKresponse1758854300 -(source:staging)) OR (service:TestRubyUpdateasecurityfilterreturnsOKresponse1758854301 -(source:staging)) OR (service:TestRubyUpdateasecurityfilterreturnsOKresponse1758854302 -(source:staging)) OR (service:TestJavaCreateasecurityfilterreturnsOKresponse1758857595 -(source:staging)) OR (service:TestJavaDeleteasecurityfilterreturnsNoContentresponse1758857599 -(source:staging)) OR (service:TestJavaGetasecurityfilterreturnsOKresponse1758857609 -(source:staging)) OR (service:TestJavaGetasecurityfilterreturnsOKresponse1758857610 -(source:staging)) OR (service:TestJavaUpdateasecurityfilterreturnsOKresponse1758857641 -(source:staging)) OR (service:TestJavaUpdateasecurityfilterreturnsOKresponse1758857642 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1758857853 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1758857854 -(source:staging)) OR (service:ExampleDeleteasecurityfilterreturnsNoContentresponse1758857877 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1758857907 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1758860922 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1758860936 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1758860965 -(source:staging)) OR (service:TestTypescriptDeleteasecurityfilterreturnsNoContentresponse1758861938 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1758861938 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1758861942 -(source:staging)) OR (service:TestJavaCreateasecurityfilterreturnsOKresponse1758867862 -(source:staging)) OR (service:TestJavaDeleteasecurityfilterreturnsNoContentresponse1758867863 -(source:staging)) OR (service:TestJavaGetasecurityfilterreturnsOKresponse1758867863 -(source:staging)) OR (service:TestJavaGetasecurityfilterreturnsOKresponse1758867864 -(source:staging)) OR (service:TestJavaUpdateasecurityfilterreturnsOKresponse1758867876 -(source:staging)) OR (service:TestJavaUpdateasecurityfilterreturnsOKresponse1758867877 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1758872253 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1758872255 -(source:staging)) OR (service:ExampleDeleteasecurityfilterreturnsNoContentresponse1758872277 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1758872307 -(source:staging)) OR (service:TestTypescriptCreateasecurityfilterreturnsOKresponse1758885589 -(source:staging)) OR (service:TestTypescriptGetasecurityfilterreturnsOKresponse1758885596 -(source:staging)) OR (service:TestTypescriptUpdateasecurityfilterreturnsOKresponse1758885618 -(source:staging)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1758886653 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1758886654 -(source:staging)) OR (service:ExampleDeleteasecurityfilterreturnsNoContentresponse1758886677 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1758886707 -(source:staging)) OR (first query - tf-TestAccDatadogSecurityMonitoringFilter-local-1758889002 -(does not really match much) -(neither does it)) OR (service:ExampleCreateasecurityfilterreturnsOKresponse1758901053 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1758901055 -(source:staging)) OR (service:ExampleDeleteasecurityfilterreturnsNoContentresponse1758901077 -(source:staging)) OR (service:ExampleGetasecurityfilterreturnsOKresponse1758901107 -(source:staging)) OR (service:ExampleUpdateasecurityfilterreturnsOKresponse1760974655)) -source:(runtime-security-agent OR cloud-workload-security)\"}", + "encoding": null + }, + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "status": { + "code": 200, + "message": "OK" + } + }, + "recorded_at": "Tue, 20 Jan 2026 10:27:51 GMT" + } + ], + "recorded_with": "VCR 6.0.0" +} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Update-a-suppression-rule-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/security_monitoring/Update-a-suppression-rule-returns-OK-response.frozen index 8839a5067..e05f55dd7 100644 --- a/tests/scenarios/cassettes/v2/security_monitoring/Update-a-suppression-rule-returns-OK-response.frozen +++ b/tests/scenarios/cassettes/v2/security_monitoring/Update-a-suppression-rule-returns-OK-response.frozen @@ -1 +1 @@ -2025-11-07T12:27:28.613Z \ No newline at end of file +2026-01-14T17:29:05.825Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/security_monitoring/Update-a-suppression-rule-returns-OK-response.json b/tests/scenarios/cassettes/v2/security_monitoring/Update-a-suppression-rule-returns-OK-response.json index 80dc5bfb1..87de30267 100644 --- a/tests/scenarios/cassettes/v2/security_monitoring/Update-a-suppression-rule-returns-OK-response.json +++ b/tests/scenarios/cassettes/v2/security_monitoring/Update-a-suppression-rule-returns-OK-response.json @@ -3,7 +3,7 @@ { "request": { "body": { - "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Update_a_suppression_rule_returns_OK_response-1762518448\",\"enabled\":true,\"name\":\"Test-Update_a_suppression_rule_returns_OK_response-1762518448\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", + "string": "{\"data\":{\"attributes\":{\"description\":\"Test-Update_a_suppression_rule_returns_OK_response-1768411745\",\"enabled\":true,\"name\":\"suppression Test-Update_a_suppression_rule_returns_OK_response-1768411745\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"technique:T1110-brute-force\",\"source:cloudtrail\"]},\"type\":\"suppressions\"}}", "encoding": null }, "headers": { @@ -19,7 +19,7 @@ }, "response": { "body": { - "string": "{\"data\":{\"id\":\"uqt-hh6-qbq\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1762518448839,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Update_a_suppression_rule_returns_OK_response-1762518448\",\"editable\":true,\"enabled\":true,\"name\":\"Test-Update_a_suppression_rule_returns_OK_response-1762518448\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1762518448839,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", + "string": "{\"data\":{\"id\":\"ucv-bpf-4bc\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768411745950,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Update_a_suppression_rule_returns_OK_response-1768411745\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Update_a_suppression_rule_returns_OK_response-1768411745\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:test\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768411745950,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":1}}}", "encoding": null }, "headers": { @@ -32,7 +32,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:28 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:05 GMT" }, { "request": { @@ -49,11 +49,11 @@ ] }, "method": "patch", - "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/uqt-hh6-qbq" + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/ucv-bpf-4bc" }, "response": { "body": { - "string": "{\"data\":{\"id\":\"uqt-hh6-qbq\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1762518448839,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Update_a_suppression_rule_returns_OK_response-1762518448\",\"editable\":true,\"enabled\":true,\"name\":\"Test-Update_a_suppression_rule_returns_OK_response-1762518448\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:staging status:low\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1762518449150,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":2}}}", + "string": "{\"data\":{\"id\":\"ucv-bpf-4bc\",\"type\":\"suppressions\",\"attributes\":{\"creation_date\":1768411745950,\"creator\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"data_exclusion_query\":\"\",\"description\":\"Test-Update_a_suppression_rule_returns_OK_response-1768411745\",\"editable\":true,\"enabled\":true,\"name\":\"suppression Test-Update_a_suppression_rule_returns_OK_response-1768411745\",\"rule_query\":\"source:cloudtrail\",\"suppression_query\":\"env:staging status:low\",\"tags\":[\"source:cloudtrail\",\"technique:T1110-brute-force\"],\"update_date\":1768411746111,\"updater\":{\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"version\":2}}}", "encoding": null }, "headers": { @@ -66,7 +66,7 @@ "message": "OK" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:28 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:05 GMT" }, { "request": { @@ -77,7 +77,7 @@ ] }, "method": "delete", - "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/uqt-hh6-qbq" + "uri": "https://api.datadoghq.com/api/v2/security_monitoring/configuration/suppressions/ucv-bpf-4bc" }, "response": { "body": { @@ -90,7 +90,7 @@ "message": "No Content" } }, - "recorded_at": "Fri, 07 Nov 2025 12:27:28 GMT" + "recorded_at": "Wed, 14 Jan 2026 17:29:05 GMT" } ], "recorded_with": "VCR 6.0.0" diff --git a/tests/scenarios/cassettes/v2/synthetics/Search-Synthetics-suites-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/synthetics/Search-Synthetics-suites-returns-OK-response.frozen deleted file mode 100644 index 768dee23b..000000000 --- a/tests/scenarios/cassettes/v2/synthetics/Search-Synthetics-suites-returns-OK-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2026-01-07T12:38:44.484Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/synthetics/Search-Synthetics-suites-returns-OK-response.json b/tests/scenarios/cassettes/v2/synthetics/Search-Synthetics-suites-returns-OK-response.json deleted file mode 100644 index b80280088..000000000 --- a/tests/scenarios/cassettes/v2/synthetics/Search-Synthetics-suites-returns-OK-response.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "http_interactions": [ - { - "request": { - "body": "", - "headers": { - "Accept": [ - "application/json" - ] - }, - "method": "get", - "uri": "https://api.datadoghq.com/api/v2/synthetics/suites/search" - }, - "response": { - "body": { - "string": "{\"data\":{\"type\":\"suites_search\",\"attributes\":{\"suites\":[{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-12T14:36:38.194974+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765550180,\"monitor_id\":243683630,\"tests\":[],\"notifications\":[],\"public_id\":\"q9j-u8p-3v5\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-12T15:13:58.194856+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765552435,\"monitor_id\":243691225,\"tests\":[],\"notifications\":[],\"public_id\":\"qqj-ma8-msw\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-12T13:58:21.265235+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765547882,\"monitor_id\":243678032,\"tests\":[],\"notifications\":[],\"public_id\":\"qwt-zcd-3e7\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-16T21:23:27.482218+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765920189,\"monitor_id\":244824489,\"tests\":[],\"notifications\":[],\"public_id\":\"yya-xnv-r72\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2026-01-06T14:31:13.144659+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1767709878,\"monitor_id\":248911428,\"tests\":[],\"notifications\":[],\"public_id\":\"37x-cfh-hik\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-12T14:52:23.813142+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765551141,\"monitor_id\":243686361,\"tests\":[],\"notifications\":[],\"public_id\":\"y9a-9jy-ng2\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-15T14:02:40.227969+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765807338,\"monitor_id\":244243608,\"tests\":[],\"notifications\":[],\"public_id\":\"45f-82u-p2d\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-15T14:22:09.594574+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765808505,\"monitor_id\":244250055,\"tests\":[],\"notifications\":[],\"public_id\":\"xd9-dws-cm2\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-15T15:36:44.135107+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765813000,\"monitor_id\":244276690,\"tests\":[],\"notifications\":[],\"public_id\":\"77s-9gi-8pa\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-16T09:42:02.245892+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765878101,\"monitor_id\":244658021,\"tests\":[],\"notifications\":[],\"public_id\":\"xft-zns-y58\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-16T09:52:14.327958+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765878721,\"monitor_id\":244659781,\"tests\":[],\"notifications\":[],\"public_id\":\"9ne-jp8-bbs\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-19T09:34:53.578670+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1766136882,\"monitor_id\":245439882,\"tests\":[],\"notifications\":[],\"public_id\":\"rcp-hsx-ksp\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-09T10:37:16.189540+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765276630,\"monitor_id\":242864230,\"tests\":[],\"notifications\":[],\"public_id\":\"ihb-7cb-mbq\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-12T14:58:39.394977+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765551515,\"monitor_id\":243687635,\"tests\":[],\"notifications\":[],\"public_id\":\"m4t-g9e-cht\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-15T13:27:01.650049+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765805206,\"monitor_id\":244230166,\"tests\":[],\"notifications\":[],\"public_id\":\"3rn-xv7-3gw\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-15T13:55:29.070758+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765806925,\"monitor_id\":244240495,\"tests\":[],\"notifications\":[],\"public_id\":\"u5z-r6t-6gj\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-15T15:48:08.393886+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765813664,\"monitor_id\":244283444,\"tests\":[],\"notifications\":[],\"public_id\":\"fug-wqb-jgm\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2025-12-17T08:57:02.235129+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1765961806,\"monitor_id\":244953226,\"tests\":[],\"notifications\":[],\"public_id\":\"tmj-mmm-6rw\",\"tags\":[\"env:production\"]},{\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"monitor_status\":\"No Data\",\"type\":\"suite\",\"modified_at\":\"2026-01-06T13:52:15.675454+00:00\",\"name\":\"Example suite name\",\"options\":{},\"monitor_name\":\"[Synthetics] Example suite name\",\"last_triggered_ts\":1767707530,\"monitor_id\":248904310,\"tests\":[],\"notifications\":[],\"public_id\":\"pkr-4b7-tug\",\"tags\":[\"env:production\"]}],\"facets\":[{\"name\":\"mobile_platform\",\"values\":[]},{\"name\":\"test_count\",\"values\":[{\"name\":\"0\",\"count\":19}]},{\"name\":\"step_count\",\"values\":[]},{\"name\":\"http_path\",\"values\":[]},{\"name\":\"team\",\"values\":[]},{\"name\":\"type\",\"values\":[{\"name\":\"suite\",\"count\":19}]},{\"name\":\"env\",\"values\":[{\"name\":\"production\",\"count\":19}]},{\"name\":\"creator\",\"values\":[{\"name\":\"CI Account\",\"count\":19}]},{\"name\":\"mobile_application\",\"values\":[]},{\"name\":\"notification\",\"values\":[]},{\"name\":\"endpoint\",\"values\":[]},{\"name\":\"http_method\",\"values\":[]},{\"name\":\"creation_source\",\"values\":[]},{\"name\":\"domain\",\"values\":[]},{\"name\":\"ci_execution_rule\",\"values\":[{\"name\":\"blocking\",\"count\":19}]},{\"name\":\"tag\",\"values\":[{\"name\":\"env:production\",\"count\":19}]},{\"name\":\"state\",\"values\":[{\"name\":\"paused\",\"count\":19}]},{\"name\":\"region\",\"values\":[]},{\"name\":\"muted\",\"values\":[{\"name\":\"0\",\"count\":19}]},{\"name\":\"status\",\"values\":[{\"name\":\"No Data\",\"count\":19}]}],\"total\":19},\"id\":\"74278a23-c9ce-4093-816d-7109fb05adb5\"}}\n", - "encoding": null - }, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "status": { - "code": 200, - "message": "OK" - } - }, - "recorded_at": "Wed, 07 Jan 2026 12:38:44 GMT" - } - ], - "recorded_with": "VCR 6.0.0" -} \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/synthetics/Synthetics-Create-a-test-suite-returns-OK-response.frozen b/tests/scenarios/cassettes/v2/synthetics/Synthetics-Create-a-test-suite-returns-OK-response.frozen deleted file mode 100644 index 62723cd8d..000000000 --- a/tests/scenarios/cassettes/v2/synthetics/Synthetics-Create-a-test-suite-returns-OK-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2026-01-07T12:38:45.716Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/v2/synthetics/Synthetics-Create-a-test-suite-returns-OK-response.json b/tests/scenarios/cassettes/v2/synthetics/Synthetics-Create-a-test-suite-returns-OK-response.json deleted file mode 100644 index d3ec9a345..000000000 --- a/tests/scenarios/cassettes/v2/synthetics/Synthetics-Create-a-test-suite-returns-OK-response.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "http_interactions": [ - { - "request": { - "body": { - "string": "{\"data\":{\"attributes\":{\"message\":\"Notification message\",\"name\":\"Example suite name\",\"options\":{},\"tags\":[\"env:production\"],\"tests\":[],\"type\":\"suite\"},\"type\":\"suites\"}}", - "encoding": null - }, - "headers": { - "Accept": [ - "application/json" - ], - "Content-Type": [ - "application/json" - ] - }, - "method": "post", - "uri": "https://api.datadoghq.com/api/v2/synthetics/suites" - }, - "response": { - "body": { - "string": "{\"data\":{\"type\":\"suites\",\"id\":\"36n-bb6-njj\",\"attributes\":{\"tags\":[\"env:production\"],\"type\":\"suite\",\"created_by\":{\"email\":\"team-intg-tools-libs-spam@datadoghq.com\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"created_at\":\"2026-01-07T12:38:46.109472+00:00\",\"modified_at\":\"2026-01-07T12:38:46.109472+00:00\",\"message\":\"Notification message\",\"public_id\":\"36n-bb6-njj\",\"options\":{},\"modified_by\":{\"email\":\"team-intg-tools-libs-spam@datadoghq.com\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\"},\"tests\":[],\"name\":\"Example suite name\",\"org_id\":321813,\"monitor_id\":249141773}}}\n", - "encoding": null - }, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "status": { - "code": 200, - "message": "OK" - } - }, - "recorded_at": "Wed, 07 Jan 2026 12:38:45 GMT" - }, - { - "request": { - "body": { - "string": "{\"data\":{\"attributes\":{\"public_ids\":[\"36n-bb6-njj\"]},\"type\":\"delete_suites_request\"}}", - "encoding": null - }, - "headers": { - "Accept": [ - "application/json" - ], - "Content-Type": [ - "application/json" - ] - }, - "method": "post", - "uri": "https://api.datadoghq.com/api/v2/synthetics/suites/bulk-delete" - }, - "response": { - "body": { - "string": "{\"data\":[{\"type\":\"suites\",\"attributes\":{\"public_id\":\"36n-bb6-njj\",\"deleted_at\":\"2026-01-07 12:38:46.679914\"},\"id\":\"36n-bb6-njj\"}]}\n", - "encoding": null - }, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "status": { - "code": 200, - "message": "OK" - } - }, - "recorded_at": "Wed, 07 Jan 2026 12:38:45 GMT" - } - ], - "recorded_with": "VCR 6.0.0" -} \ No newline at end of file diff --git a/tests/scenarios/features/v2/given.json b/tests/scenarios/features/v2/given.json index c717223ca..9d69fd33f 100644 --- a/tests/scenarios/features/v2/given.json +++ b/tests/scenarios/features/v2/given.json @@ -1035,7 +1035,7 @@ "parameters": [ { "name": "body", - "value": "{\n \"data\": {\n \"type\": \"suppressions\",\n \"attributes\": {\n \"enabled\": true,\n \"name\": \"{{ unique }}\",\n \"description\": \"{{ unique }}\",\n \"rule_query\": \"source:cloudtrail\",\n \"suppression_query\": \"env:test\",\n \"tags\": [\"technique:T1110-brute-force\", \"source:cloudtrail\"]\n }\n }\n}" + "value": "{\n \"data\": {\n \"type\": \"suppressions\",\n \"attributes\": {\n \"enabled\": true,\n \"name\": \"suppression {{ unique }}\",\n \"description\": \"{{ unique }}\",\n \"rule_query\": \"source:cloudtrail\",\n \"suppression_query\": \"env:test\",\n \"tags\": [\"technique:T1110-brute-force\", \"source:cloudtrail\"]\n }\n }\n}" } ], "step": "there is a valid \"suppression\" in the system", @@ -1043,6 +1043,18 @@ "tag": "Security Monitoring", "operationId": "CreateSecurityMonitoringSuppression" }, + { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"suppressions\",\n \"attributes\": {\n \"enabled\": true,\n \"name\": \"suppression2 {{ unique }}\",\n \"description\": \"{{ unique }}\",\n \"rule_query\": \"source:cloudtrail\",\n \"suppression_query\": \"env:test\",\n \"tags\": [\"technique:T1110-brute-force\", \"source:cloudtrail\"]\n }\n }\n}" + } + ], + "step": "there is a valid \"suppression2\" in the system", + "key": "suppression2", + "tag": "Security Monitoring", + "operationId": "CreateSecurityMonitoringSuppression" + }, { "parameters": [ { diff --git a/tests/scenarios/features/v2/security_monitoring.feature b/tests/scenarios/features/v2/security_monitoring.feature index 2a6c599c3..215cb4672 100644 --- a/tests/scenarios/features/v2/security_monitoring.feature +++ b/tests/scenarios/features/v2/security_monitoring.feature @@ -1124,6 +1124,40 @@ Feature: Security Monitoring When the request is sent Then the response status is 200 OK + @team:DataDog/k9-cloud-security-platform + Scenario: Get all suppression rules returns "OK" response with pagination + Given new "ListSecurityMonitoringSuppressions" request + And there is a valid "suppression" in the system + And there is a valid "suppression2" in the system + And request contains "page[size]" parameter with value 1 + And request contains "page[number]" parameter with value 0 + And request contains "query" parameter with value "id:{{ suppression.data.id }} OR id:{{ suppression2.data.id }}" + When the request is sent + Then the response status is 200 OK + And the response "data" has length 1 + + @team:DataDog/k9-cloud-security-platform + Scenario: Get all suppression rules returns "OK" response with sort ascending + Given new "ListSecurityMonitoringSuppressions" request + And there is a valid "suppression" in the system + And there is a valid "suppression2" in the system + And request contains "sort" parameter with value "name" + And request contains "query" parameter with value "id:{{ suppression.data.id }} OR id:{{ suppression2.data.id }}" + When the request is sent + Then the response status is 200 OK + And the response "data[0].attributes.name" is equal to "suppression {{ unique }}" + + @team:DataDog/k9-cloud-security-platform + Scenario: Get all suppression rules returns "OK" response with sort descending + Given new "ListSecurityMonitoringSuppressions" request + And there is a valid "suppression" in the system + And there is a valid "suppression2" in the system + And request contains "sort" parameter with value "-name" + And request contains "query" parameter with value "id:{{ suppression.data.id }} OR id:{{ suppression2.data.id }}" + When the request is sent + Then the response status is 200 OK + And the response "data[0].attributes.name" is equal to "suppression2 {{ unique }}" + @skip @team:DataDog/k9-cloud-security-platform Scenario: Get critical assets affecting a specific rule returns "Not Found" response Given new "GetCriticalAssetsAffectingRule" request @@ -1610,6 +1644,20 @@ Feature: Security Monitoring When the request is sent Then the response status is 422 The server cannot process the request because it contains invalid data. + @skip @team:DataDog/k9-cloud-security-platform + Scenario: Preview a rule query with applied filters returns "Bad Request" response + Given new "PreviewSecurityMonitoringRuleQuery" request + And body with value {"query":"","queryIndex":0,"filters":[],"type":"log_detection","detectionMethod":"threshold","dataSource":"logs","groupByFields":[],"distinctFields":[]} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/k9-cloud-security-platform + Scenario: Preview a rule query with applied filters returns "OK" response + Given new "PreviewSecurityMonitoringRuleQuery" request + And body with value {"query":"source:cloudtrail","queryIndex":0,"filters":[],"type":"log_detection","detectionMethod":"threshold","dataSource":"logs","groupByFields":[],"distinctFields":[]} + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/k9-vm-ast Scenario: Returns a list of Secrets rules returns "OK" response Given operation "GetSecretsRules" enabled diff --git a/tests/scenarios/features/v2/synthetics.feature b/tests/scenarios/features/v2/synthetics.feature index 5697490c9..133993b11 100644 --- a/tests/scenarios/features/v2/synthetics.feature +++ b/tests/scenarios/features/v2/synthetics.feature @@ -51,73 +51,3 @@ Feature: Synthetics When the request is sent Then the response status is 200 OK And the response "data.attributes.on_demand_concurrency_cap" is equal to 20 - - @generated @skip @team:DataDog/synthetics-managing - Scenario: Search Synthetics suites returns "API error response." response - Given new "SearchSuites" request - When the request is sent - Then the response status is 400 API error response. - - @team:DataDog/synthetics-managing - Scenario: Search Synthetics suites returns "OK" response - Given new "SearchSuites" request - When the request is sent - Then the response status is 200 OK - - @generated @skip @team:DataDog/synthetics-managing - Scenario: Synthetics: Bulk delete suites returns "API error response." response - Given new "DeleteSyntheticsSuites" request - And body with value {"data": {"attributes": {"public_ids": [""]}, "type": "delete_suites_request"}} - When the request is sent - Then the response status is 400 API error response. - - @generated @skip @team:DataDog/synthetics-managing - Scenario: Synthetics: Bulk delete suites returns "OK" response - Given new "DeleteSyntheticsSuites" request - And body with value {"data": {"attributes": {"public_ids": [""]}, "type": "delete_suites_request"}} - When the request is sent - Then the response status is 200 OK - - @generated @skip @team:DataDog/synthetics-managing - Scenario: Synthetics: Create a test suite returns "API error response." response - Given new "CreateSyntheticsSuite" request - And body with value {"data": {"attributes": {"message": "Notification message", "name": "Example suite name", "options": {}, "tags": ["env:production"], "tests": [{"alerting_criticality": "critical", "public_id": ""}], "type": "suite"}, "type": "suites"}} - When the request is sent - Then the response status is 400 API error response. - - @team:DataDog/synthetics-managing - Scenario: Synthetics: Create a test suite returns "OK" response - Given new "CreateSyntheticsSuite" request - And body with value {"data": {"attributes": {"message": "Notification message", "name": "Example suite name", "options": {}, "tags": ["env:production"], "tests": [], "type": "suite"}, "type": "suites"}} - When the request is sent - Then the response status is 200 OK - - @generated @skip @team:DataDog/synthetics-managing - Scenario: Synthetics: Edit a test suite returns "API error response." response - Given new "EditSyntheticsSuite" request - And request contains "public_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"message": "Notification message", "name": "Example suite name", "options": {}, "tags": ["env:production"], "tests": [{"alerting_criticality": "critical", "public_id": ""}], "type": "suite"}, "type": "suites"}} - When the request is sent - Then the response status is 400 API error response. - - @generated @skip @team:DataDog/synthetics-managing - Scenario: Synthetics: Edit a test suite returns "OK" response - Given new "EditSyntheticsSuite" request - And request contains "public_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"message": "Notification message", "name": "Example suite name", "options": {}, "tags": ["env:production"], "tests": [{"alerting_criticality": "critical", "public_id": ""}], "type": "suite"}, "type": "suites"}} - When the request is sent - Then the response status is 200 OK - - @generated @skip @team:DataDog/synthetics-managing - Scenario: Synthetics: Get a suite returns "API error response." response - Given new "GetSyntheticsSuite" request - And request contains "public_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 404 API error response. - - @generated @skip @team:DataDog/synthetics-managing - Scenario: Synthetics: Get a suite returns "OK" response - Given new "GetSyntheticsSuite" request - And request contains "public_id" parameter from "REPLACE.ME" - When the request is sent - Then the response status is 200 OK diff --git a/tests/scenarios/features/v2/undo.json b/tests/scenarios/features/v2/undo.json index b8cb14962..6e2cbe29e 100644 --- a/tests/scenarios/features/v2/undo.json +++ b/tests/scenarios/features/v2/undo.json @@ -4186,6 +4186,12 @@ "type": "safe" } }, + "PreviewSecurityMonitoringRuleQuery": { + "tag": "Security Monitoring", + "undo": { + "type": "safe" + } + }, "ListSecurityMonitoringRules": { "tag": "Security Monitoring", "undo": { @@ -4646,43 +4652,6 @@ "type": "safe" } }, - "CreateSyntheticsSuite": { - "tag": "Synthetics", - "undo": { - "operationId": "DeleteSyntheticsSuites", - "parameters": [ - { - "name": "body", - "template": "{\"data\": {\"type\": \"delete_suites_request\", \"attributes\": {\"public_ids\": [\"{{ data.attributes.public_id }}\"]}}}" - } - ], - "type": "unsafe" - } - }, - "DeleteSyntheticsSuites": { - "tag": "Synthetics", - "undo": { - "type": "idempotent" - } - }, - "SearchSuites": { - "tag": "Synthetics", - "undo": { - "type": "safe" - } - }, - "GetSyntheticsSuite": { - "tag": "Synthetics", - "undo": { - "type": "safe" - } - }, - "EditSyntheticsSuite": { - "tag": "Synthetics", - "undo": { - "type": "idempotent" - } - }, "PatchGlobalVariable": { "tag": "Synthetics", "undo": { diff --git a/tests/scenarios/function_mappings.rs b/tests/scenarios/function_mappings.rs index 7bd4db343..b51b3a36e 100644 --- a/tests/scenarios/function_mappings.rs +++ b/tests/scenarios/function_mappings.rs @@ -2584,6 +2584,10 @@ pub fn collect_function_calls(world: &mut DatadogWorld) { "v2.GetSuppressionVersionHistory".into(), test_v2_get_suppression_version_history, ); + world.function_mappings.insert( + "v2.PreviewSecurityMonitoringRuleQuery".into(), + test_v2_preview_security_monitoring_rule_query, + ); world.function_mappings.insert( "v2.ListSecurityMonitoringRules".into(), test_v2_list_security_monitoring_rules, @@ -4472,24 +4476,6 @@ pub fn collect_function_calls(world: &mut DatadogWorld) { "v2.SetOnDemandConcurrencyCap".into(), test_v2_set_on_demand_concurrency_cap, ); - world.function_mappings.insert( - "v2.CreateSyntheticsSuite".into(), - test_v2_create_synthetics_suite, - ); - world.function_mappings.insert( - "v2.DeleteSyntheticsSuites".into(), - test_v2_delete_synthetics_suites, - ); - world - .function_mappings - .insert("v2.SearchSuites".into(), test_v2_search_suites); - world - .function_mappings - .insert("v2.GetSyntheticsSuite".into(), test_v2_get_synthetics_suite); - world.function_mappings.insert( - "v2.EditSyntheticsSuite".into(), - test_v2_edit_synthetics_suite, - ); world.function_mappings.insert( "v2.PatchGlobalVariable".into(), test_v2_patch_global_variable, @@ -18419,8 +18405,20 @@ fn test_v2_list_security_monitoring_suppressions( let query = _parameters .get("query") .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let sort = _parameters + .get("sort") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let page_size = _parameters + .get("page[size]") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); + let page_number = _parameters + .get("page[number]") + .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); let mut params = datadogV2::api_security_monitoring::ListSecurityMonitoringSuppressionsOptionalParams::default(); params.query = query; + params.sort = sort; + params.page_size = page_size; + params.page_number = page_number; let response = match block_on(api.list_security_monitoring_suppressions_with_http_info(params)) { Ok(response) => response, @@ -18686,6 +18684,34 @@ fn test_v2_get_suppression_version_history( world.response.code = response.status.as_u16(); } +fn test_v2_preview_security_monitoring_rule_query( + world: &mut DatadogWorld, + _parameters: &HashMap, +) { + let api = world + .api_instances + .v2_api_security_monitoring + .as_ref() + .expect("api instance not found"); + let body = serde_json::from_value(_parameters.get("body").unwrap().clone()).unwrap(); + let response = match block_on(api.preview_security_monitoring_rule_query_with_http_info(body)) { + Ok(response) => response, + Err(error) => { + return match error { + Error::ResponseError(e) => { + world.response.code = e.status.as_u16(); + if let Some(entity) = e.entity { + world.response.object = serde_json::to_value(entity).unwrap(); + } + } + _ => panic!("error parsing response: {error}"), + }; + } + }; + world.response.object = serde_json::to_value(response.entity).unwrap(); + world.response.code = response.status.as_u16(); +} + fn test_v2_list_security_monitoring_rules( world: &mut DatadogWorld, _parameters: &HashMap, @@ -34587,155 +34613,6 @@ fn test_v2_set_on_demand_concurrency_cap( world.response.code = response.status.as_u16(); } -fn test_v2_create_synthetics_suite(world: &mut DatadogWorld, _parameters: &HashMap) { - let api = world - .api_instances - .v2_api_synthetics - .as_ref() - .expect("api instance not found"); - let body = serde_json::from_value(_parameters.get("body").unwrap().clone()).unwrap(); - let response = match block_on(api.create_synthetics_suite_with_http_info(body)) { - Ok(response) => response, - Err(error) => { - return match error { - Error::ResponseError(e) => { - world.response.code = e.status.as_u16(); - if let Some(entity) = e.entity { - world.response.object = serde_json::to_value(entity).unwrap(); - } - } - _ => panic!("error parsing response: {error}"), - }; - } - }; - world.response.object = serde_json::to_value(response.entity).unwrap(); - world.response.code = response.status.as_u16(); -} - -fn test_v2_delete_synthetics_suites( - world: &mut DatadogWorld, - _parameters: &HashMap, -) { - let api = world - .api_instances - .v2_api_synthetics - .as_ref() - .expect("api instance not found"); - let body = serde_json::from_value(_parameters.get("body").unwrap().clone()).unwrap(); - let response = match block_on(api.delete_synthetics_suites_with_http_info(body)) { - Ok(response) => response, - Err(error) => { - return match error { - Error::ResponseError(e) => { - world.response.code = e.status.as_u16(); - if let Some(entity) = e.entity { - world.response.object = serde_json::to_value(entity).unwrap(); - } - } - _ => panic!("error parsing response: {error}"), - }; - } - }; - world.response.object = serde_json::to_value(response.entity).unwrap(); - world.response.code = response.status.as_u16(); -} - -fn test_v2_search_suites(world: &mut DatadogWorld, _parameters: &HashMap) { - let api = world - .api_instances - .v2_api_synthetics - .as_ref() - .expect("api instance not found"); - let query = _parameters - .get("query") - .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); - let sort = _parameters - .get("sort") - .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); - let facets_only = _parameters - .get("facets_only") - .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); - let start = _parameters - .get("start") - .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); - let count = _parameters - .get("count") - .and_then(|param| Some(serde_json::from_value(param.clone()).unwrap())); - let mut params = datadogV2::api_synthetics::SearchSuitesOptionalParams::default(); - params.query = query; - params.sort = sort; - params.facets_only = facets_only; - params.start = start; - params.count = count; - let response = match block_on(api.search_suites_with_http_info(params)) { - Ok(response) => response, - Err(error) => { - return match error { - Error::ResponseError(e) => { - world.response.code = e.status.as_u16(); - if let Some(entity) = e.entity { - world.response.object = serde_json::to_value(entity).unwrap(); - } - } - _ => panic!("error parsing response: {error}"), - }; - } - }; - world.response.object = serde_json::to_value(response.entity).unwrap(); - world.response.code = response.status.as_u16(); -} - -fn test_v2_get_synthetics_suite(world: &mut DatadogWorld, _parameters: &HashMap) { - let api = world - .api_instances - .v2_api_synthetics - .as_ref() - .expect("api instance not found"); - let public_id = serde_json::from_value(_parameters.get("public_id").unwrap().clone()).unwrap(); - let response = match block_on(api.get_synthetics_suite_with_http_info(public_id)) { - Ok(response) => response, - Err(error) => { - return match error { - Error::ResponseError(e) => { - world.response.code = e.status.as_u16(); - if let Some(entity) = e.entity { - world.response.object = serde_json::to_value(entity).unwrap(); - } - } - _ => panic!("error parsing response: {error}"), - }; - } - }; - world.response.object = serde_json::to_value(response.entity).unwrap(); - world.response.code = response.status.as_u16(); -} - -fn test_v2_edit_synthetics_suite(world: &mut DatadogWorld, _parameters: &HashMap) { - let api = world - .api_instances - .v2_api_synthetics - .as_ref() - .expect("api instance not found"); - let public_id = serde_json::from_value(_parameters.get("public_id").unwrap().clone()).unwrap(); - let body = serde_json::from_value(_parameters.get("body").unwrap().clone()).unwrap(); - let response = match block_on(api.edit_synthetics_suite_with_http_info(public_id, body)) { - Ok(response) => response, - Err(error) => { - return match error { - Error::ResponseError(e) => { - world.response.code = e.status.as_u16(); - if let Some(entity) = e.entity { - world.response.object = serde_json::to_value(entity).unwrap(); - } - } - _ => panic!("error parsing response: {error}"), - }; - } - }; - world.response.object = serde_json::to_value(response.entity).unwrap(); - world.response.code = response.status.as_u16(); -} - fn test_v2_patch_global_variable(world: &mut DatadogWorld, _parameters: &HashMap) { let api = world .api_instances