From b5b89a790e6449e61d710b7b74b854fb31b20a1d Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Mon, 17 Nov 2025 22:04:04 +0000 Subject: [PATCH] Regenerate client from commit 950aa15 of spec repo --- .generator/schemas/v2/openapi.yaml | 734 ++++++++ .../frozen.json | 1 + .../recording.har | 67 + .../frozen.json | 1 + .../recording.har | 109 ++ .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 152 ++ .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 152 ++ .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 147 ++ .../frozen.json | 1 + .../recording.har | 67 + .../frozen.json | 1 + .../recording.har | 67 + .../frozen.json | 1 + .../recording.har | 251 +++ .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 57 + .../frozen.json | 1 + .../recording.har | 152 ++ .../AddRoleToRestrictionQuery.ts | 35 + .../CreateRestrictionQuery.ts | 29 + .../DeleteRestrictionQuery.ts | 26 + .../GetRestrictionQuery.ts | 26 + .../GetRoleRestrictionQuery.ts | 25 + .../ListRestrictionQueries.ts | 18 + .../ListRestrictionQueryRoles.ts | 26 + .../ListUserRestrictionQueries.ts | 25 + .../RemoveRoleFromRestrictionQuery.ts | 36 + .../ReplaceRestrictionQuery.ts | 34 + .../UpdateRestrictionQuery.ts | 34 + features/support/scenarios_model_mapping.ts | 105 ++ features/v2/given.json | 12 + features/v2/logs_restriction_queries.feature | 287 +++ features/v2/undo.json | 73 + .../configuration.ts | 11 + .../apis/LogsRestrictionQueriesApi.ts | 1645 +++++++++++++++++ packages/datadog-api-client-v2/index.ts | 32 + .../models/LogsRestrictionQueriesType.ts | 16 + .../models/ObjectSerializer.ts | 34 + .../models/RestrictionQueryAttributes.ts | 104 ++ .../RestrictionQueryCreateAttributes.ts | 53 + .../models/RestrictionQueryCreateData.ts | 62 + .../models/RestrictionQueryCreatePayload.ts | 53 + .../models/RestrictionQueryListResponse.ts | 53 + .../RestrictionQueryResponseIncludedItem.ts | 16 + .../models/RestrictionQueryRole.ts | 73 + .../models/RestrictionQueryRoleAttribute.ts | 52 + .../models/RestrictionQueryRolesResponse.ts | 53 + .../RestrictionQueryUpdateAttributes.ts | 53 + .../models/RestrictionQueryUpdateData.ts | 62 + .../models/RestrictionQueryUpdatePayload.ts | 53 + .../RestrictionQueryWithRelationships.ts | 79 + ...strictionQueryWithRelationshipsResponse.ts | 62 + .../RestrictionQueryWithoutRelationships.ts | 69 + ...ictionQueryWithoutRelationshipsResponse.ts | 53 + 77 files changed, 6024 insertions(+) create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-Bad-Request-response_111583348/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-Bad-Request-response_111583348/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-OK-response_3206923690/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-OK-response_3206923690/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Bad-Request-response_1603149133/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Bad-Request-response_1603149133/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Not-found-response_1516544206/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Not-found-response_1516544206/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-OK-response_4160228625/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-OK-response_4160228625/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Bad-Request-response_2731233454/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Bad-Request-response_2731233454/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Not-found-response_3505229493/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Not-found-response_3505229493/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-OK-response_2707069060/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-OK-response_2707069060/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Bad-Request-response_1854123842/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Bad-Request-response_1854123842/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Not-found-response_1770807281/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Not-found-response_1770807281/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Bad-Request-response_2754972360/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Bad-Request-response_2754972360/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Not-found-response_1656319775/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Not-found-response_1656319775/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-OK-response_48156390/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-OK-response_48156390/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Bad-Request-response_2157195683/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Bad-Request-response_2157195683/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Not-found-response_1872190532/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Not-found-response_1872190532/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-OK-response_4030799143/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-OK-response_4030799143/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/List-restriction-queries-returns-OK-response_3168694309/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/List-restriction-queries-returns-OK-response_3168694309/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Bad-Request-response_3337304138/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Bad-Request-response_3337304138/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Not-found-response_253155065/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Not-found-response_253155065/recording.har create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-OK-response_412716376/frozen.json create mode 100644 cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-OK-response_412716376/recording.har create mode 100644 examples/v2/logs-restriction-queries/AddRoleToRestrictionQuery.ts create mode 100644 examples/v2/logs-restriction-queries/CreateRestrictionQuery.ts create mode 100644 examples/v2/logs-restriction-queries/DeleteRestrictionQuery.ts create mode 100644 examples/v2/logs-restriction-queries/GetRestrictionQuery.ts create mode 100644 examples/v2/logs-restriction-queries/GetRoleRestrictionQuery.ts create mode 100644 examples/v2/logs-restriction-queries/ListRestrictionQueries.ts create mode 100644 examples/v2/logs-restriction-queries/ListRestrictionQueryRoles.ts create mode 100644 examples/v2/logs-restriction-queries/ListUserRestrictionQueries.ts create mode 100644 examples/v2/logs-restriction-queries/RemoveRoleFromRestrictionQuery.ts create mode 100644 examples/v2/logs-restriction-queries/ReplaceRestrictionQuery.ts create mode 100644 examples/v2/logs-restriction-queries/UpdateRestrictionQuery.ts create mode 100644 features/v2/logs_restriction_queries.feature create mode 100644 packages/datadog-api-client-v2/apis/LogsRestrictionQueriesApi.ts create mode 100644 packages/datadog-api-client-v2/models/LogsRestrictionQueriesType.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryAttributes.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryCreateAttributes.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryCreateData.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryCreatePayload.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryListResponse.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryResponseIncludedItem.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryRole.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryRoleAttribute.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryRolesResponse.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryUpdateAttributes.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryUpdateData.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryUpdatePayload.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryWithRelationships.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryWithRelationshipsResponse.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryWithoutRelationships.ts create mode 100644 packages/datadog-api-client-v2/models/RestrictionQueryWithoutRelationshipsResponse.ts diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 2b877f268dc9..c15bda9a5c05 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -945,6 +945,27 @@ components: required: true schema: type: string + RestrictionQueryID: + description: The ID of the restriction query. + in: path + name: restriction_query_id + required: true + schema: + type: string + RestrictionQueryRoleID: + description: The ID of the role. + in: path + name: role_id + required: true + schema: + type: string + RestrictionQueryUserID: + description: The ID of the user. + in: path + name: user_id + required: true + schema: + type: string RetentionFilterIdParam: description: The ID of the retention filter. in: path @@ -30115,6 +30136,15 @@ components: example: eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ== type: string type: object + LogsRestrictionQueriesType: + default: logs_restriction_queries + description: Restriction query resource type. + enum: + - logs_restriction_queries + example: logs_restriction_queries + type: string + x-enum-varnames: + - LOGS_RESTRICTION_QUERIES LogsSort: description: Sort parameters when querying logs. enum: @@ -41436,6 +41466,191 @@ components: required: - data type: object + RestrictionQueryAttributes: + description: Attributes of the restriction query. + properties: + created_at: + description: Creation time of the restriction query. + example: '2020-03-17T21:06:44.000Z' + format: date-time + readOnly: true + type: string + last_modifier_email: + description: Email of the user who last modified this restriction query. + example: user@example.com + readOnly: true + type: string + last_modifier_name: + description: Name of the user who last modified this restriction query. + example: John Doe + readOnly: true + type: string + modified_at: + description: Time of last restriction query modification. + example: '2020-03-17T21:15:15.000Z' + format: date-time + readOnly: true + type: string + restriction_query: + description: The query that defines the restriction. Only the content matching + the query can be returned. + example: env:sandbox + type: string + role_count: + description: Number of roles associated with this restriction query. + example: 3 + format: int64 + readOnly: true + type: integer + user_count: + description: Number of users associated with this restriction query. + example: 5 + format: int64 + readOnly: true + type: integer + type: object + RestrictionQueryCreateAttributes: + description: Attributes of the created restriction query. + properties: + restriction_query: + description: The restriction query. + example: env:sandbox + type: string + required: + - restriction_query + type: object + RestrictionQueryCreateData: + description: Data related to the creation of a restriction query. + properties: + attributes: + $ref: '#/components/schemas/RestrictionQueryCreateAttributes' + type: + $ref: '#/components/schemas/LogsRestrictionQueriesType' + type: object + RestrictionQueryCreatePayload: + description: Create a restriction query. + properties: + data: + $ref: '#/components/schemas/RestrictionQueryCreateData' + type: object + RestrictionQueryListResponse: + description: Response containing information about multiple restriction queries. + properties: + data: + description: Array of returned restriction queries. + items: + $ref: '#/components/schemas/RestrictionQueryWithoutRelationships' + type: array + type: object + RestrictionQueryResponseIncludedItem: + description: An object related to a restriction query. + oneOf: + - $ref: '#/components/schemas/RestrictionQueryRole' + RestrictionQueryRole: + description: Partial role object. + properties: + attributes: + $ref: '#/components/schemas/RestrictionQueryRoleAttribute' + id: + description: ID of the role. + example: + type: string + type: + $ref: '#/components/schemas/RolesType' + required: + - type + - id + - attributes + type: object + RestrictionQueryRoleAttribute: + description: Attributes of the role for a restriction query. + properties: + name: + description: The role name. + example: Datadog Admin Role + type: string + type: object + RestrictionQueryRolesResponse: + description: Response containing information about roles attached to a restriction + query. + properties: + data: + description: Array of roles. + items: + $ref: '#/components/schemas/RestrictionQueryRole' + type: array + type: object + RestrictionQueryUpdateAttributes: + description: Attributes of the edited restriction query. + properties: + restriction_query: + description: The restriction query. + example: env:sandbox + type: string + required: + - restriction_query + type: object + RestrictionQueryUpdateData: + description: Data related to the update of a restriction query. + properties: + attributes: + $ref: '#/components/schemas/RestrictionQueryUpdateAttributes' + type: + $ref: '#/components/schemas/LogsRestrictionQueriesType' + type: object + RestrictionQueryUpdatePayload: + description: Update a restriction query. + properties: + data: + $ref: '#/components/schemas/RestrictionQueryUpdateData' + type: object + RestrictionQueryWithRelationships: + description: Restriction query object returned by the API. + properties: + attributes: + $ref: '#/components/schemas/RestrictionQueryAttributes' + id: + description: ID of the restriction query. + example: 79a0e60a-644a-11ea-ad29-43329f7f58b5 + type: string + relationships: + $ref: '#/components/schemas/UserRelationships' + type: + $ref: '#/components/schemas/LogsRestrictionQueriesType' + type: object + RestrictionQueryWithRelationshipsResponse: + description: Response containing information about a single restriction query. + properties: + data: + $ref: '#/components/schemas/RestrictionQueryWithRelationships' + included: + description: Array of objects related to the restriction query. + items: + $ref: '#/components/schemas/RestrictionQueryResponseIncludedItem' + type: array + type: object + RestrictionQueryWithoutRelationships: + description: Restriction query object returned by the API. + properties: + attributes: + $ref: '#/components/schemas/RestrictionQueryAttributes' + id: + description: ID of the restriction query. + example: 79a0e60a-644a-11ea-ad29-43329f7f58b5 + type: string + type: + default: logs_restriction_queries + description: Restriction queries type. + example: logs_restriction_queries + readOnly: true + type: string + type: object + RestrictionQueryWithoutRelationshipsResponse: + description: Response containing information about a single restriction query. + properties: + data: + $ref: '#/components/schemas/RestrictionQueryWithoutRelationships' + type: object RetentionFilter: description: The definition of the retention filter. properties: @@ -69398,6 +69613,487 @@ paths: operator: OR permissions: - logs_generate_metrics + /api/v2/logs/config/restriction_queries: + get: + description: Returns all restriction queries, including their names and IDs. + operationId: ListRestrictionQueries + parameters: + - $ref: '#/components/parameters/PageSize' + - $ref: '#/components/parameters/PageNumber' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryListResponse' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: List restriction queries + tags: + - Logs Restriction Queries + x-permission: + operator: OR + permissions: + - logs_read_config + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + post: + description: Create a new restriction query for your organization. + operationId: CreateRestrictionQuery + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryCreatePayload' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryWithoutRelationshipsResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Create a restriction query + tags: + - Logs Restriction Queries + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - user_access_manage + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + /api/v2/logs/config/restriction_queries/role/{role_id}: + get: + description: Get restriction query for a given role. + operationId: GetRoleRestrictionQuery + parameters: + - $ref: '#/components/parameters/RestrictionQueryRoleID' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryListResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Get restriction query for a given role + tags: + - Logs Restriction Queries + x-permission: + operator: OR + permissions: + - logs_read_config + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + /api/v2/logs/config/restriction_queries/user/{user_id}: + get: + description: Get all restriction queries for a given user. + operationId: ListUserRestrictionQueries + parameters: + - $ref: '#/components/parameters/RestrictionQueryUserID' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryListResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Get all restriction queries for a given user + tags: + - Logs Restriction Queries + x-permission: + operator: OR + permissions: + - logs_read_config + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + /api/v2/logs/config/restriction_queries/{restriction_query_id}: + delete: + description: Deletes a restriction query. + operationId: DeleteRestrictionQuery + parameters: + - $ref: '#/components/parameters/RestrictionQueryID' + responses: + '204': + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Delete a restriction query + tags: + - Logs Restriction Queries + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - user_access_manage + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + get: + description: Get a restriction query in the organization specified by the restriction + query's `restriction_query_id`. + operationId: GetRestrictionQuery + parameters: + - $ref: '#/components/parameters/RestrictionQueryID' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryWithRelationshipsResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Get a restriction query + tags: + - Logs Restriction Queries + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - logs_read_config + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + patch: + description: Edit a restriction query. + operationId: UpdateRestrictionQuery + parameters: + - $ref: '#/components/parameters/RestrictionQueryID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryUpdatePayload' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryWithoutRelationshipsResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Update a restriction query + tags: + - Logs Restriction Queries + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - user_access_manage + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + put: + description: Replace a restriction query. + operationId: ReplaceRestrictionQuery + parameters: + - $ref: '#/components/parameters/RestrictionQueryID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryUpdatePayload' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryWithoutRelationshipsResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Replace a restriction query + tags: + - Logs Restriction Queries + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - user_access_manage + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + /api/v2/logs/config/restriction_queries/{restriction_query_id}/roles: + delete: + description: Removes a role from a restriction query. + operationId: RemoveRoleFromRestrictionQuery + parameters: + - $ref: '#/components/parameters/RestrictionQueryID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelationshipToRole' + required: true + responses: + '204': + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Revoke role from a restriction query + tags: + - Logs Restriction Queries + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - user_access_manage + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + get: + description: Returns all roles that have a given restriction query. + operationId: ListRestrictionQueryRoles + parameters: + - $ref: '#/components/parameters/RestrictionQueryID' + - $ref: '#/components/parameters/PageSize' + - $ref: '#/components/parameters/PageNumber' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RestrictionQueryRolesResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: List roles for a restriction query + tags: + - Logs Restriction Queries + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - logs_read_config + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + post: + description: 'Adds a role to a restriction query. + + + **Note**: This operation automatically grants the `logs_read_data` permission + to the role if it doesn''t already have it.' + operationId: AddRoleToRestrictionQuery + parameters: + - $ref: '#/components/parameters/RestrictionQueryID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RelationshipToRole' + required: true + responses: + '204': + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Authentication error + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: Not found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Grant role to a restriction query + tags: + - Logs Restriction Queries + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - user_access_manage + x-unstable: '**Note**: This endpoint is in public beta. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' /api/v2/logs/events: get: description: 'List endpoint returns logs that match a log search query. @@ -84267,6 +84963,44 @@ tags: description: Find out more at url: https://docs.datadoghq.com/logs/logs_to_metrics/ name: Logs Metrics +- description: '**Note: This endpoint is in public beta. If you have any feedback, + contact [Datadog support](https://docs.datadoghq.com/help/).** + + + A Restriction Query is a logs query that restricts which logs the `logs_read_data` + permission grants read access to. + + For users whose roles have Restriction Queries, any log query they make only returns + those log events that also match + + one of their Restriction Queries. This is true whether the user queries log events + from any log-related feature, including + + the log explorer, Live Tail, re-hydration, or a dashboard widget. + + + Restriction Queries currently only support use of the following components of + log events: + + + - Reserved attributes + + - The log message + + - Tags + + + To restrict read access on log data, add a team tag to log events to indicate + which teams own them, and then scope Restriction Queries to the relevant values + of the team tag. Tags can be applied to log events in many ways, and a log event + can have multiple tags with the same key (like team) and different values. This + means the same log event can be visible to roles whose restriction queries are + scoped to different team values. + + + See [How to Set Up RBAC for Logs](https://docs.datadoghq.com/logs/guide/logs-rbac/?tab=api#restrict-access-to-logs) + for details on how to add restriction queries.' + name: Logs Restriction Queries - description: "The metrics endpoint allows you to:\n\n- Post metrics data so it can be graphed on Datadog\u2019s dashboards\n- Query metrics from any time period (timeseries and scalar)\n- Modify tag configurations for metrics\n- View tags diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-Bad-Request-response_111583348/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-Bad-Request-response_111583348/frozen.json new file mode 100644 index 000000000000..bc75e2b7dd6f --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-Bad-Request-response_111583348/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:33.023Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-Bad-Request-response_111583348/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-Bad-Request-response_111583348/recording.har new file mode 100644 index 000000000000..aa33cdc96b5e --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-Bad-Request-response_111583348/recording.har @@ -0,0 +1,67 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Create a restriction query returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "914ab5642c89f946865164b7d00223f9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"test\":\"bad_request\"}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries" + }, + "response": { + "bodySize": 132, + "content": { + "mimeType": "application/json", + "size": 132, + "text": "{\"errors\":[\"API input validation failed: {'_schema': [{'detail': 'Object must include `data` key.', 'source': {'pointer': '/'}}]}\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 712, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-11-17T21:36:33.463Z", + "time": 321 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-OK-response_3206923690/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-OK-response_3206923690/frozen.json new file mode 100644 index 000000000000..9c5a3991af52 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-OK-response_3206923690/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:33.792Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-OK-response_3206923690/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-OK-response_3206923690/recording.har new file mode 100644 index 000000000000..a34b9651c273 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Create-a-restriction-query-returns-OK-response_3206923690/recording.har @@ -0,0 +1,109 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Create a restriction query returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "eb3b308b3d569ef84096dd7718f5185e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 93, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 585, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"restriction_query\":\"env:sandbox\"},\"type\":\"logs_restriction_queries\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries" + }, + "response": { + "bodySize": 235, + "content": { + "mimeType": "application/json", + "size": 235, + "text": "{\"data\":{\"type\":\"logs_restriction_queries\",\"id\":\"7d16b5bc-c3fd-11f0-a3af-da7ad0900002\",\"attributes\":{\"restriction_query\":\"env:sandbox\",\"created_at\":\"2025-11-17T21:36:34.125787+00:00\",\"modified_at\":\"2025-11-17T21:36:34.125787+00:00\"}}}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 712, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:33.795Z", + "time": 393 + }, + { + "_id": "bd990d100f98e382d38f97a6e71283ba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 559, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/7d16b5bc-c3fd-11f0-a3af-da7ad0900002" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/html; charset=utf-8", + "size": 0 + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "text/html; charset=utf-8" + } + ], + "headersSize": 699, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 204, + "statusText": "No Content" + }, + "startedDateTime": "2025-11-17T21:36:34.194Z", + "time": 404 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Bad-Request-response_1603149133/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Bad-Request-response_1603149133/frozen.json new file mode 100644 index 000000000000..352a3c1fc2ba --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Bad-Request-response_1603149133/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:34.603Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Bad-Request-response_1603149133/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Bad-Request-response_1603149133/recording.har new file mode 100644 index 000000000000..3abb1487c50b --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Bad-Request-response_1603149133/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Delete a restriction query returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "08325a2eeadf2ff87bc7b7f250b93938", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/malformed_id" + }, + "response": { + "bodySize": 38, + "content": { + "mimeType": "application/json", + "size": 38, + "text": "{\"errors\":[\"uuid is not proper type\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 711, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-11-17T21:36:34.605Z", + "time": 364 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Not-found-response_1516544206/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Not-found-response_1516544206/frozen.json new file mode 100644 index 000000000000..015a5a3093a2 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Not-found-response_1516544206/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:34.974Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Not-found-response_1516544206/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Not-found-response_1516544206/recording.har new file mode 100644 index 000000000000..f07c8eb46b15 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-Not-found-response_1516544206/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Delete a restriction query returns \"Not found\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "d657b2986cfbefba4d5d555aa72dd8de", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/00000000-0000-0000-0000-000000000000" + }, + "response": { + "bodySize": 42, + "content": { + "mimeType": "application/json", + "size": 42, + "text": "{\"errors\":[\"Restriction query not found\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 711, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2025-11-17T21:36:34.977Z", + "time": 356 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-OK-response_4160228625/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-OK-response_4160228625/frozen.json new file mode 100644 index 000000000000..91d9d584320f --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-OK-response_4160228625/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:35.338Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-OK-response_4160228625/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-OK-response_4160228625/recording.har new file mode 100644 index 000000000000..8efb3407c649 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Delete-a-restriction-query-returns-OK-response_4160228625/recording.har @@ -0,0 +1,152 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Delete a restriction query returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "eb3b308b3d569ef84096dd7718f5185e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 93, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"restriction_query\":\"env:sandbox\"},\"type\":\"logs_restriction_queries\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries" + }, + "response": { + "bodySize": 235, + "content": { + "mimeType": "application/json", + "size": 235, + "text": "{\"data\":{\"type\":\"logs_restriction_queries\",\"id\":\"7dfcd704-c3fd-11f0-a70b-da7ad0900002\",\"attributes\":{\"restriction_query\":\"env:sandbox\",\"created_at\":\"2025-11-17T21:36:35.634185+00:00\",\"modified_at\":\"2025-11-17T21:36:35.634185+00:00\"}}}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 712, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:35.341Z", + "time": 355 + }, + { + "_id": "6b813924834aab6219b8e3ef379271c2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/7dfcd704-c3fd-11f0-a70b-da7ad0900002" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/html; charset=utf-8", + "size": 0 + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "text/html; charset=utf-8" + } + ], + "headersSize": 699, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 204, + "statusText": "No Content" + }, + "startedDateTime": "2025-11-17T21:36:35.702Z", + "time": 417 + }, + { + "_id": "6b813924834aab6219b8e3ef379271c2", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/7dfcd704-c3fd-11f0-a70b-da7ad0900002" + }, + "response": { + "bodySize": 42, + "content": { + "mimeType": "application/json", + "size": 42, + "text": "{\"errors\":[\"Restriction query not found\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 711, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2025-11-17T21:36:36.123Z", + "time": 374 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Bad-Request-response_2731233454/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Bad-Request-response_2731233454/frozen.json new file mode 100644 index 000000000000..4aa0120b928c --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Bad-Request-response_2731233454/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:36.502Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Bad-Request-response_2731233454/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Bad-Request-response_2731233454/recording.har new file mode 100644 index 000000000000..420edb4a9d13 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Bad-Request-response_2731233454/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Get a restriction query returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "075fc7ebeac9783a7a83a6e011e9ed38", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 544, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/malformed_id" + }, + "response": { + "bodySize": 38, + "content": { + "mimeType": "application/json", + "size": 38, + "text": "{\"errors\":[\"uuid is not proper type\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 713, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-11-17T21:36:36.505Z", + "time": 348 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Not-found-response_3505229493/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Not-found-response_3505229493/frozen.json new file mode 100644 index 000000000000..7e06f10cf66b --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Not-found-response_3505229493/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:36.858Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Not-found-response_3505229493/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Not-found-response_3505229493/recording.har new file mode 100644 index 000000000000..1cbc8e5d9c74 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-Not-found-response_3505229493/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Get a restriction query returns \"Not found\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "58b5254e9c84ea1ccffcb472b25d89f6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 568, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/00000000-0000-0000-0000-000000000000" + }, + "response": { + "bodySize": 42, + "content": { + "mimeType": "application/json", + "size": 42, + "text": "{\"errors\":[\"Restriction query not found\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 713, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2025-11-17T21:36:36.861Z", + "time": 497 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-OK-response_2707069060/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-OK-response_2707069060/frozen.json new file mode 100644 index 000000000000..c931fb7d2b2d --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-OK-response_2707069060/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:37.364Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-OK-response_2707069060/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-OK-response_2707069060/recording.har new file mode 100644 index 000000000000..dfa0e6843029 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-a-restriction-query-returns-OK-response_2707069060/recording.har @@ -0,0 +1,152 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Get a restriction query returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "eb3b308b3d569ef84096dd7718f5185e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 93, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"restriction_query\":\"env:sandbox\"},\"type\":\"logs_restriction_queries\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries" + }, + "response": { + "bodySize": 235, + "content": { + "mimeType": "application/json", + "size": 235, + "text": "{\"data\":{\"type\":\"logs_restriction_queries\",\"id\":\"7f34e18e-c3fd-11f0-8c23-da7ad0900002\",\"attributes\":{\"restriction_query\":\"env:sandbox\",\"created_at\":\"2025-11-17T21:36:37.678850+00:00\",\"modified_at\":\"2025-11-17T21:36:37.678850+00:00\"}}}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 712, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:37.377Z", + "time": 363 + }, + { + "_id": "1b59abc6d214c2e133880b03b78f3de9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 568, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/7f34e18e-c3fd-11f0-8c23-da7ad0900002" + }, + "response": { + "bodySize": 273, + "content": { + "mimeType": "application/json", + "size": 273, + "text": "{\"data\":{\"type\":\"logs_restriction_queries\",\"id\":\"7f34e18e-c3fd-11f0-8c23-da7ad0900002\",\"attributes\":{\"restriction_query\":\"env:sandbox\",\"created_at\":\"2025-11-17T21:36:37.678850+00:00\",\"modified_at\":\"2025-11-17T21:36:37.678850+00:00\"},\"relationships\":{\"roles\":{\"data\":[]}}}}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 714, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:37.745Z", + "time": 348 + }, + { + "_id": "3ff7a52e65a77dd2e105e9ce102abb48", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/7f34e18e-c3fd-11f0-8c23-da7ad0900002" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/html; charset=utf-8", + "size": 0 + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "text/html; charset=utf-8" + } + ], + "headersSize": 699, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 204, + "statusText": "No Content" + }, + "startedDateTime": "2025-11-17T21:36:38.098Z", + "time": 387 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Bad-Request-response_1854123842/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Bad-Request-response_1854123842/frozen.json new file mode 100644 index 000000000000..adb8da068ad4 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Bad-Request-response_1854123842/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:38.488Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Bad-Request-response_1854123842/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Bad-Request-response_1854123842/recording.har new file mode 100644 index 000000000000..947725c5dd80 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Bad-Request-response_1854123842/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Get all restriction queries for a given user returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "668705797b0cf880b82a4ad211d0170c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 556, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/user/malformed_id" + }, + "response": { + "bodySize": 38, + "content": { + "mimeType": "application/json", + "size": 38, + "text": "{\"errors\":[\"uuid is not proper type\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 713, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-11-17T21:36:38.490Z", + "time": 361 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Not-found-response_1770807281/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Not-found-response_1770807281/frozen.json new file mode 100644 index 000000000000..c39f4f46e663 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Not-found-response_1770807281/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:38.856Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Not-found-response_1770807281/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Not-found-response_1770807281/recording.har new file mode 100644 index 000000000000..93cb4d7bcbce --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-all-restriction-queries-for-a-given-user-returns-Not-found-response_1770807281/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Get all restriction queries for a given user returns \"Not found\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "8559ccc701915a0bfd2d000351160ff4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/user/00000000-0000-0000-0000-000000000000" + }, + "response": { + "bodySize": 80, + "content": { + "mimeType": "application/json", + "size": 80, + "text": "{\"errors\":[\"user with uuid 00000000-0000-0000-0000-000000000000 doesn't exist\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 713, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-11-17T21:36:38.859Z", + "time": 329 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Bad-Request-response_2754972360/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Bad-Request-response_2754972360/frozen.json new file mode 100644 index 000000000000..6c01c7c96f2d --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Bad-Request-response_2754972360/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:39.195Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Bad-Request-response_2754972360/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Bad-Request-response_2754972360/recording.har new file mode 100644 index 000000000000..282537c906c4 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Bad-Request-response_2754972360/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Get restriction query for a given role returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "7e0c2f77efbdbbdf6fe6f91ecb20d116", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 552, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/role/malformed_id" + }, + "response": { + "bodySize": 40, + "content": { + "mimeType": "application/json", + "size": 40, + "text": "{\"errors\":[\"Missing Role malformed_id\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 713, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-11-17T21:36:39.197Z", + "time": 364 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Not-found-response_1656319775/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Not-found-response_1656319775/frozen.json new file mode 100644 index 000000000000..bc8ed272e232 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Not-found-response_1656319775/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:39.565Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Not-found-response_1656319775/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Not-found-response_1656319775/recording.har new file mode 100644 index 000000000000..f907d6c786e9 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-Not-found-response_1656319775/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Get restriction query for a given role returns \"Not found\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "9e3fe7a4f5adc3895999a4c8bad141a1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 577, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/role/00000000-0000-0000-0000-000000000000" + }, + "response": { + "bodySize": 64, + "content": { + "mimeType": "application/json", + "size": 64, + "text": "{\"errors\":[\"Missing Role 00000000-0000-0000-0000-000000000000\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 713, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-11-17T21:36:39.568Z", + "time": 344 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-OK-response_48156390/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-OK-response_48156390/frozen.json new file mode 100644 index 000000000000..9285c3162363 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-OK-response_48156390/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:39.917Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-OK-response_48156390/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-OK-response_48156390/recording.har new file mode 100644 index 000000000000..bb0564b018e7 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Get-restriction-query-for-a-given-role-returns-OK-response_48156390/recording.har @@ -0,0 +1,147 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Get restriction query for a given role returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "5dbfbef66894df992140c7b21e205c2b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 124, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 550, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"name\":\"Test-Get_restriction_query_for_a_given_role_returns_OK_response-1763415399\"},\"type\":\"roles\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/roles" + }, + "response": { + "bodySize": 998, + "content": { + "mimeType": "application/vnd.api+json", + "size": 998, + "text": "{\"data\":{\"id\":\"80b7ecc2-c3fd-11f0-8d5a-da7ad0900002\",\"type\":\"roles\",\"attributes\":{\"created_at\":\"2025-11-17T21:36:40.216326Z\",\"modified_at\":\"2025-11-17T21:36:40.216269Z\",\"name\":\"Test-Get_restriction_query_for_a_given_role_returns_OK_response-1763415399\",\"team_count\":0,\"user_count\":0},\"relationships\":{\"permissions\":{\"data\":[{\"id\":\"d90f6830-d3d8-11e9-a77a-b3404e5e9ee2\",\"type\":\"permissions\"},{\"id\":\"4441648c-d8b1-11e9-a77a-1b899a04b304\",\"type\":\"permissions\"},{\"id\":\"417ba636-2dce-11eb-84c0-6bce5b0d9de0\",\"type\":\"permissions\"},{\"id\":\"12efc20e-d36c-11eb-a9b8-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"7605ef24-f376-11eb-b90b-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"b6bf9ac6-9a59-11ec-8480-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"f8e941cf-e746-11ec-b22d-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"6c5ad874-7aff-11ed-a5cd-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"a8b4d6e8-4ea4-11ee-b482-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"50c270de-69ee-11ee-9151-da7ad0900002\",\"type\":\"permissions\"}]}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/vnd.api+json" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:39.920Z", + "time": 359 + }, + { + "_id": "c0d9e0ea325fe94cdde725cfdafb0180", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 577, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/role/80b7ecc2-c3fd-11f0-8d5a-da7ad0900002" + }, + "response": { + "bodySize": 12, + "content": { + "mimeType": "application/json", + "size": 12, + "text": "{\"data\":[]}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 690, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:40.284Z", + "time": 345 + }, + { + "_id": "a3bca48cffed0583a3e7820550241e6a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 523, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/roles/80b7ecc2-c3fd-11f0-8d5a-da7ad0900002" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/plain", + "size": 0 + }, + "cookies": [], + "headers": [], + "headersSize": 591, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 204, + "statusText": "No Content" + }, + "startedDateTime": "2025-11-17T21:36:40.632Z", + "time": 323 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Bad-Request-response_2157195683/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Bad-Request-response_2157195683/frozen.json new file mode 100644 index 000000000000..815bdc8d61b2 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Bad-Request-response_2157195683/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:40.959Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Bad-Request-response_2157195683/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Bad-Request-response_2157195683/recording.har new file mode 100644 index 000000000000..e0e01e96d8c6 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Bad-Request-response_2157195683/recording.har @@ -0,0 +1,67 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Grant role to a restriction query returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "3277fc7ce44e6c885bb70f4c03288995", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 69, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 596, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"id\":\"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\"type\":\"roles\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/malformed_id/roles" + }, + "response": { + "bodySize": 75, + "content": { + "mimeType": "application/json", + "size": 75, + "text": "{\"errors\":[\"Role with id: 3653d3c6-0c75-11ea-ad28-fb5701eabc7d not found\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 711, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2025-11-17T21:36:40.962Z", + "time": 710 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Not-found-response_1872190532/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Not-found-response_1872190532/frozen.json new file mode 100644 index 000000000000..4bc9a5c96464 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Not-found-response_1872190532/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:41.677Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Not-found-response_1872190532/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Not-found-response_1872190532/recording.har new file mode 100644 index 000000000000..7bae98e931d7 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-Not-found-response_1872190532/recording.har @@ -0,0 +1,67 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Grant role to a restriction query returns \"Not found\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "cc2e521640ba1e6ff5d2047c2f9e5957", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 69, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 619, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"id\":\"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\"type\":\"roles\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/00000000-0000-0000-0000-000000000000/roles" + }, + "response": { + "bodySize": 75, + "content": { + "mimeType": "application/json", + "size": 75, + "text": "{\"errors\":[\"Role with id: 3653d3c6-0c75-11ea-ad28-fb5701eabc7d not found\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 711, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2025-11-17T21:36:41.680Z", + "time": 339 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-OK-response_4030799143/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-OK-response_4030799143/frozen.json new file mode 100644 index 000000000000..dd50ac79432a --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-OK-response_4030799143/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:42.024Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-OK-response_4030799143/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-OK-response_4030799143/recording.har new file mode 100644 index 000000000000..f572792cbe9e --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/Grant-role-to-a-restriction-query-returns-OK-response_4030799143/recording.har @@ -0,0 +1,251 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/Grant role to a restriction query returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "eb3b308b3d569ef84096dd7718f5185e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 93, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"restriction_query\":\"env:sandbox\"},\"type\":\"logs_restriction_queries\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries" + }, + "response": { + "bodySize": 235, + "content": { + "mimeType": "application/json", + "size": 235, + "text": "{\"data\":{\"type\":\"logs_restriction_queries\",\"id\":\"81f63382-c3fd-11f0-be7b-da7ad0900002\",\"attributes\":{\"restriction_query\":\"env:sandbox\",\"created_at\":\"2025-11-17T21:36:42.301659+00:00\",\"modified_at\":\"2025-11-17T21:36:42.301659+00:00\"}}}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 712, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:42.027Z", + "time": 326 + }, + { + "_id": "9c0648ef6973c59d8a08d37a16422230", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 119, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 550, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"name\":\"Test-Grant_role_to_a_restriction_query_returns_OK_response-1763415402\"},\"type\":\"roles\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/roles" + }, + "response": { + "bodySize": 993, + "content": { + "mimeType": "application/vnd.api+json", + "size": 993, + "text": "{\"data\":{\"id\":\"822b736c-c3fd-11f0-8df1-da7ad0900002\",\"type\":\"roles\",\"attributes\":{\"created_at\":\"2025-11-17T21:36:42.650961Z\",\"modified_at\":\"2025-11-17T21:36:42.650523Z\",\"name\":\"Test-Grant_role_to_a_restriction_query_returns_OK_response-1763415402\",\"team_count\":0,\"user_count\":0},\"relationships\":{\"permissions\":{\"data\":[{\"id\":\"d90f6830-d3d8-11e9-a77a-b3404e5e9ee2\",\"type\":\"permissions\"},{\"id\":\"4441648c-d8b1-11e9-a77a-1b899a04b304\",\"type\":\"permissions\"},{\"id\":\"417ba636-2dce-11eb-84c0-6bce5b0d9de0\",\"type\":\"permissions\"},{\"id\":\"12efc20e-d36c-11eb-a9b8-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"7605ef24-f376-11eb-b90b-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"b6bf9ac6-9a59-11ec-8480-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"f8e941cf-e746-11ec-b22d-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"6c5ad874-7aff-11ed-a5cd-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"a8b4d6e8-4ea4-11ee-b482-da7ad0900002\",\"type\":\"permissions\"},{\"id\":\"50c270de-69ee-11ee-9151-da7ad0900002\",\"type\":\"permissions\"}]}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/vnd.api+json" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:42.357Z", + "time": 358 + }, + { + "_id": "37ba0598e22a0f2fa3dfbe338b533680", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 69, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 620, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"id\":\"822b736c-c3fd-11f0-8df1-da7ad0900002\",\"type\":\"roles\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/81f63382-c3fd-11f0-be7b-da7ad0900002/roles" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/html; charset=utf-8", + "size": 0 + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "text/html; charset=utf-8" + } + ], + "headersSize": 699, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 204, + "statusText": "No Content" + }, + "startedDateTime": "2025-11-17T21:36:42.727Z", + "time": 390 + }, + { + "_id": "56774dafda5a671cdf37b4cef4c1e348", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 523, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/roles/822b736c-c3fd-11f0-8df1-da7ad0900002" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/plain", + "size": 0 + }, + "cookies": [], + "headers": [], + "headersSize": 591, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 204, + "statusText": "No Content" + }, + "startedDateTime": "2025-11-17T21:36:43.122Z", + "time": 349 + }, + { + "_id": "931f19c05642d3889f8655f097f905a8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/81f63382-c3fd-11f0-be7b-da7ad0900002" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/html; charset=utf-8", + "size": 0 + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "text/html; charset=utf-8" + } + ], + "headersSize": 699, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 204, + "statusText": "No Content" + }, + "startedDateTime": "2025-11-17T21:36:43.473Z", + "time": 391 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/List-restriction-queries-returns-OK-response_3168694309/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-restriction-queries-returns-OK-response_3168694309/frozen.json new file mode 100644 index 000000000000..1625447c2891 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-restriction-queries-returns-OK-response_3168694309/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:43.867Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/List-restriction-queries-returns-OK-response_3168694309/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-restriction-queries-returns-OK-response_3168694309/recording.har new file mode 100644 index 000000000000..7f884f9d67de --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-restriction-queries-returns-OK-response_3168694309/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/List restriction queries returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "14b9f3a8ceaeb71ebec2861300148be7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 533, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries" + }, + "response": { + "bodySize": 240, + "content": { + "mimeType": "application/json", + "size": 240, + "text": "{\"data\":[{\"type\":\"logs_restriction_queries\",\"id\":\"6358d012-be7e-11f0-8999-da7ad0900002\",\"attributes\":{\"restriction_query\":\"env:production\",\"created_at\":\"2025-11-10T21:44:09.039708+00:00\",\"modified_at\":\"2025-11-10T21:44:09.164487+00:00\"}}]}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 714, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:43.869Z", + "time": 337 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Bad-Request-response_3337304138/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Bad-Request-response_3337304138/frozen.json new file mode 100644 index 000000000000..ba2854bcaa92 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Bad-Request-response_3337304138/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:44.211Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Bad-Request-response_3337304138/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Bad-Request-response_3337304138/recording.har new file mode 100644 index 000000000000..d316f418e983 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Bad-Request-response_3337304138/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/List roles for a restriction query returns \"Bad Request\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "b35554b0ccd299083db27e2e40957984", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 556, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/malformed_id/roles" + }, + "response": { + "bodySize": 38, + "content": { + "mimeType": "application/json", + "size": 38, + "text": "{\"errors\":[\"uuid is not proper type\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 713, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-11-17T21:36:44.213Z", + "time": 386 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Not-found-response_253155065/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Not-found-response_253155065/frozen.json new file mode 100644 index 000000000000..313482819239 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Not-found-response_253155065/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:44.606Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Not-found-response_253155065/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Not-found-response_253155065/recording.har new file mode 100644 index 000000000000..fdd74d6dea3b --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-Not-found-response_253155065/recording.har @@ -0,0 +1,57 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/List roles for a restriction query returns \"Not found\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "4c44d5c428ddd616f3462114737e1ab1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/00000000-0000-0000-0000-000000000000/roles" + }, + "response": { + "bodySize": 42, + "content": { + "mimeType": "application/json", + "size": 42, + "text": "{\"errors\":[\"Restriction query not found\"]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 713, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2025-11-17T21:36:44.609Z", + "time": 349 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-OK-response_412716376/frozen.json b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-OK-response_412716376/frozen.json new file mode 100644 index 000000000000..8e315c548326 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-OK-response_412716376/frozen.json @@ -0,0 +1 @@ +"2025-11-17T21:36:44.965Z" diff --git a/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-OK-response_412716376/recording.har b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-OK-response_412716376/recording.har new file mode 100644 index 000000000000..4c9dd8eae921 --- /dev/null +++ b/cassettes/v2/Logs-Restriction-Queries_2746039292/List-roles-for-a-restriction-query-returns-OK-response_412716376/recording.har @@ -0,0 +1,152 @@ +{ + "log": { + "_recordingName": "Logs Restriction Queries/List roles for a restriction query returns \"OK\" response", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.5" + }, + "entries": [ + { + "_id": "eb3b308b3d569ef84096dd7718f5185e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 93, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + }, + { + "_fromType": "array", + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 587, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"data\":{\"attributes\":{\"restriction_query\":\"env:sandbox\"},\"type\":\"logs_restriction_queries\"}}" + }, + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries" + }, + "response": { + "bodySize": 235, + "content": { + "mimeType": "application/json", + "size": 235, + "text": "{\"data\":{\"type\":\"logs_restriction_queries\",\"id\":\"83bb0986-c3fd-11f0-8604-da7ad0900002\",\"attributes\":{\"restriction_query\":\"env:sandbox\",\"created_at\":\"2025-11-17T21:36:45.269298+00:00\",\"modified_at\":\"2025-11-17T21:36:45.269298+00:00\"}}}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 712, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:44.967Z", + "time": 363 + }, + { + "_id": "82f0bcfca6cf0d086863a9754b6110c0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "application/json" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/83bb0986-c3fd-11f0-8604-da7ad0900002/roles" + }, + "response": { + "bodySize": 12, + "content": { + "mimeType": "application/json", + "size": 12, + "text": "{\"data\":[]}\n" + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "application/json" + } + ], + "headersSize": 690, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-11-17T21:36:45.335Z", + "time": 375 + }, + { + "_id": "3212abd50bfe9f7d26a892b29df9c3d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "_fromType": "array", + "name": "accept", + "value": "*/*" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://api.datadoghq.com/api/v2/logs/config/restriction_queries/83bb0986-c3fd-11f0-8604-da7ad0900002" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/html; charset=utf-8", + "size": 0 + }, + "cookies": [], + "headers": [ + { + "name": "content-type", + "value": "text/html; charset=utf-8" + } + ], + "headersSize": 699, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 204, + "statusText": "No Content" + }, + "startedDateTime": "2025-11-17T21:36:45.715Z", + "time": 378 + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/examples/v2/logs-restriction-queries/AddRoleToRestrictionQuery.ts b/examples/v2/logs-restriction-queries/AddRoleToRestrictionQuery.ts new file mode 100644 index 000000000000..34a6c62b4e17 --- /dev/null +++ b/examples/v2/logs-restriction-queries/AddRoleToRestrictionQuery.ts @@ -0,0 +1,35 @@ +/** + * Grant role to a restriction query returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.addRoleToRestrictionQuery"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "restriction_query" in the system +const RESTRICTION_QUERY_DATA_ID = process.env + .RESTRICTION_QUERY_DATA_ID as string; + +// there is a valid "role" in the system +const ROLE_DATA_ID = process.env.ROLE_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiAddRoleToRestrictionQueryRequest = { + body: { + data: { + id: ROLE_DATA_ID, + type: "roles", + }, + }, + restrictionQueryId: RESTRICTION_QUERY_DATA_ID, +}; + +apiInstance + .addRoleToRestrictionQuery(params) + .then((data: any) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/CreateRestrictionQuery.ts b/examples/v2/logs-restriction-queries/CreateRestrictionQuery.ts new file mode 100644 index 000000000000..3393ffa6df3c --- /dev/null +++ b/examples/v2/logs-restriction-queries/CreateRestrictionQuery.ts @@ -0,0 +1,29 @@ +/** + * Create a restriction query returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.createRestrictionQuery"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +const params: v2.LogsRestrictionQueriesApiCreateRestrictionQueryRequest = { + body: { + data: { + attributes: { + restrictionQuery: "env:sandbox", + }, + type: "logs_restriction_queries", + }, + }, +}; + +apiInstance + .createRestrictionQuery(params) + .then((data: v2.RestrictionQueryWithoutRelationshipsResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/DeleteRestrictionQuery.ts b/examples/v2/logs-restriction-queries/DeleteRestrictionQuery.ts new file mode 100644 index 000000000000..3fe62927aa6e --- /dev/null +++ b/examples/v2/logs-restriction-queries/DeleteRestrictionQuery.ts @@ -0,0 +1,26 @@ +/** + * Delete a restriction query returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.deleteRestrictionQuery"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "restriction_query" in the system +const RESTRICTION_QUERY_DATA_ID = process.env + .RESTRICTION_QUERY_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiDeleteRestrictionQueryRequest = { + restrictionQueryId: RESTRICTION_QUERY_DATA_ID, +}; + +apiInstance + .deleteRestrictionQuery(params) + .then((data: any) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/GetRestrictionQuery.ts b/examples/v2/logs-restriction-queries/GetRestrictionQuery.ts new file mode 100644 index 000000000000..bba81970d7ed --- /dev/null +++ b/examples/v2/logs-restriction-queries/GetRestrictionQuery.ts @@ -0,0 +1,26 @@ +/** + * Get a restriction query returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.getRestrictionQuery"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "restriction_query" in the system +const RESTRICTION_QUERY_DATA_ID = process.env + .RESTRICTION_QUERY_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiGetRestrictionQueryRequest = { + restrictionQueryId: RESTRICTION_QUERY_DATA_ID, +}; + +apiInstance + .getRestrictionQuery(params) + .then((data: v2.RestrictionQueryWithRelationshipsResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/GetRoleRestrictionQuery.ts b/examples/v2/logs-restriction-queries/GetRoleRestrictionQuery.ts new file mode 100644 index 000000000000..cba4d42569f4 --- /dev/null +++ b/examples/v2/logs-restriction-queries/GetRoleRestrictionQuery.ts @@ -0,0 +1,25 @@ +/** + * Get restriction query for a given role returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.getRoleRestrictionQuery"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "role" in the system +const ROLE_DATA_ID = process.env.ROLE_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiGetRoleRestrictionQueryRequest = { + roleId: ROLE_DATA_ID, +}; + +apiInstance + .getRoleRestrictionQuery(params) + .then((data: v2.RestrictionQueryListResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/ListRestrictionQueries.ts b/examples/v2/logs-restriction-queries/ListRestrictionQueries.ts new file mode 100644 index 000000000000..3a2e4a7077f0 --- /dev/null +++ b/examples/v2/logs-restriction-queries/ListRestrictionQueries.ts @@ -0,0 +1,18 @@ +/** + * List restriction queries returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.listRestrictionQueries"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +apiInstance + .listRestrictionQueries() + .then((data: v2.RestrictionQueryListResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/ListRestrictionQueryRoles.ts b/examples/v2/logs-restriction-queries/ListRestrictionQueryRoles.ts new file mode 100644 index 000000000000..8aa29a50db81 --- /dev/null +++ b/examples/v2/logs-restriction-queries/ListRestrictionQueryRoles.ts @@ -0,0 +1,26 @@ +/** + * List roles for a restriction query returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.listRestrictionQueryRoles"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "restriction_query" in the system +const RESTRICTION_QUERY_DATA_ID = process.env + .RESTRICTION_QUERY_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiListRestrictionQueryRolesRequest = { + restrictionQueryId: RESTRICTION_QUERY_DATA_ID, +}; + +apiInstance + .listRestrictionQueryRoles(params) + .then((data: v2.RestrictionQueryRolesResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/ListUserRestrictionQueries.ts b/examples/v2/logs-restriction-queries/ListUserRestrictionQueries.ts new file mode 100644 index 000000000000..08f4ff1e0769 --- /dev/null +++ b/examples/v2/logs-restriction-queries/ListUserRestrictionQueries.ts @@ -0,0 +1,25 @@ +/** + * Get all restriction queries for a given user returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.listUserRestrictionQueries"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "user" in the system +const USER_DATA_ID = process.env.USER_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiListUserRestrictionQueriesRequest = { + userId: USER_DATA_ID, +}; + +apiInstance + .listUserRestrictionQueries(params) + .then((data: v2.RestrictionQueryListResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/RemoveRoleFromRestrictionQuery.ts b/examples/v2/logs-restriction-queries/RemoveRoleFromRestrictionQuery.ts new file mode 100644 index 000000000000..35cb48ba14ae --- /dev/null +++ b/examples/v2/logs-restriction-queries/RemoveRoleFromRestrictionQuery.ts @@ -0,0 +1,36 @@ +/** + * Revoke role from a restriction query returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.removeRoleFromRestrictionQuery"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "restriction_query" in the system +const RESTRICTION_QUERY_DATA_ID = process.env + .RESTRICTION_QUERY_DATA_ID as string; + +// there is a valid "role" in the system +const ROLE_DATA_ID = process.env.ROLE_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiRemoveRoleFromRestrictionQueryRequest = + { + body: { + data: { + id: ROLE_DATA_ID, + type: "roles", + }, + }, + restrictionQueryId: RESTRICTION_QUERY_DATA_ID, + }; + +apiInstance + .removeRoleFromRestrictionQuery(params) + .then((data: any) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/ReplaceRestrictionQuery.ts b/examples/v2/logs-restriction-queries/ReplaceRestrictionQuery.ts new file mode 100644 index 000000000000..565efad9076c --- /dev/null +++ b/examples/v2/logs-restriction-queries/ReplaceRestrictionQuery.ts @@ -0,0 +1,34 @@ +/** + * Replace a restriction query returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.replaceRestrictionQuery"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "restriction_query" in the system +const RESTRICTION_QUERY_DATA_ID = process.env + .RESTRICTION_QUERY_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiReplaceRestrictionQueryRequest = { + body: { + data: { + attributes: { + restrictionQuery: "env:staging", + }, + type: "logs_restriction_queries", + }, + }, + restrictionQueryId: RESTRICTION_QUERY_DATA_ID, +}; + +apiInstance + .replaceRestrictionQuery(params) + .then((data: v2.RestrictionQueryWithoutRelationshipsResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/examples/v2/logs-restriction-queries/UpdateRestrictionQuery.ts b/examples/v2/logs-restriction-queries/UpdateRestrictionQuery.ts new file mode 100644 index 000000000000..662185589626 --- /dev/null +++ b/examples/v2/logs-restriction-queries/UpdateRestrictionQuery.ts @@ -0,0 +1,34 @@ +/** + * Update a restriction query returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +configuration.unstableOperations["v2.updateRestrictionQuery"] = true; +const apiInstance = new v2.LogsRestrictionQueriesApi(configuration); + +// there is a valid "restriction_query" in the system +const RESTRICTION_QUERY_DATA_ID = process.env + .RESTRICTION_QUERY_DATA_ID as string; + +const params: v2.LogsRestrictionQueriesApiUpdateRestrictionQueryRequest = { + body: { + data: { + attributes: { + restrictionQuery: "env:production", + }, + type: "logs_restriction_queries", + }, + }, + restrictionQueryId: RESTRICTION_QUERY_DATA_ID, +}; + +apiInstance + .updateRestrictionQuery(params) + .then((data: v2.RestrictionQueryWithoutRelationshipsResponse) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/features/support/scenarios_model_mapping.ts b/features/support/scenarios_model_mapping.ts index 11287364c4aa..7ce6922d83d6 100644 --- a/features/support/scenarios_model_mapping.ts +++ b/features/support/scenarios_model_mapping.ts @@ -6667,6 +6667,111 @@ export const ScenariosModelMappings: {[key: string]: {[key: string]: any}} = { }, "operationResponseType": "LogsMetricResponse", }, + "v2.ListRestrictionQueries": { + "pageSize": { + "type": "number", + "format": "int64", + }, + "pageNumber": { + "type": "number", + "format": "int64", + }, + "operationResponseType": "RestrictionQueryListResponse", + }, + "v2.CreateRestrictionQuery": { + "body": { + "type": "RestrictionQueryCreatePayload", + "format": "", + }, + "operationResponseType": "RestrictionQueryWithoutRelationshipsResponse", + }, + "v2.GetRoleRestrictionQuery": { + "roleId": { + "type": "string", + "format": "", + }, + "operationResponseType": "RestrictionQueryListResponse", + }, + "v2.ListUserRestrictionQueries": { + "userId": { + "type": "string", + "format": "", + }, + "operationResponseType": "RestrictionQueryListResponse", + }, + "v2.GetRestrictionQuery": { + "restrictionQueryId": { + "type": "string", + "format": "", + }, + "operationResponseType": "RestrictionQueryWithRelationshipsResponse", + }, + "v2.ReplaceRestrictionQuery": { + "restrictionQueryId": { + "type": "string", + "format": "", + }, + "body": { + "type": "RestrictionQueryUpdatePayload", + "format": "", + }, + "operationResponseType": "RestrictionQueryWithoutRelationshipsResponse", + }, + "v2.DeleteRestrictionQuery": { + "restrictionQueryId": { + "type": "string", + "format": "", + }, + "operationResponseType": "{}", + }, + "v2.UpdateRestrictionQuery": { + "restrictionQueryId": { + "type": "string", + "format": "", + }, + "body": { + "type": "RestrictionQueryUpdatePayload", + "format": "", + }, + "operationResponseType": "RestrictionQueryWithoutRelationshipsResponse", + }, + "v2.ListRestrictionQueryRoles": { + "restrictionQueryId": { + "type": "string", + "format": "", + }, + "pageSize": { + "type": "number", + "format": "int64", + }, + "pageNumber": { + "type": "number", + "format": "int64", + }, + "operationResponseType": "RestrictionQueryRolesResponse", + }, + "v2.AddRoleToRestrictionQuery": { + "restrictionQueryId": { + "type": "string", + "format": "", + }, + "body": { + "type": "RelationshipToRole", + "format": "", + }, + "operationResponseType": "{}", + }, + "v2.RemoveRoleFromRestrictionQuery": { + "restrictionQueryId": { + "type": "string", + "format": "", + }, + "body": { + "type": "RelationshipToRole", + "format": "", + }, + "operationResponseType": "{}", + }, "v2.ListTagConfigurations": { "filterConfigured": { "type": "boolean", diff --git a/features/v2/given.json b/features/v2/given.json index 8afb9b89bda5..b1cb0acd3155 100644 --- a/features/v2/given.json +++ b/features/v2/given.json @@ -651,6 +651,18 @@ "tag": "Logs Metrics", "operationId": "CreateLogsMetric" }, + { + "parameters": [ + { + "name": "body", + "value": "{\"data\": {\"attributes\": {\"restriction_query\": \"env:sandbox\"}, \"type\": \"logs_restriction_queries\"}}" + } + ], + "step": "there is a valid \"restriction_query\" in the system", + "key": "restriction_query", + "tag": "Logs Restriction Queries", + "operationId": "CreateRestrictionQuery" + }, { "parameters": [ { diff --git a/features/v2/logs_restriction_queries.feature b/features/v2/logs_restriction_queries.feature new file mode 100644 index 000000000000..44d65b92fd5c --- /dev/null +++ b/features/v2/logs_restriction_queries.feature @@ -0,0 +1,287 @@ +@endpoint(logs-restriction-queries) @endpoint(logs-restriction-queries-v2) +Feature: Logs Restriction Queries + **Note: This endpoint is in public beta. If you have any feedback, contact + [Datadog support](https://docs.datadoghq.com/help/).** A Restriction + Query is a logs query that restricts which logs the `logs_read_data` + permission grants read access to. For users whose roles have Restriction + Queries, any log query they make only returns those log events that also + match one of their Restriction Queries. This is true whether the user + queries log events from any log-related feature, including the log + explorer, Live Tail, re-hydration, or a dashboard widget. Restriction + Queries currently only support use of the following components of log + events: - Reserved attributes - The log message - Tags To restrict read + access on log data, add a team tag to log events to indicate which teams + own them, and then scope Restriction Queries to the relevant values of the + team tag. Tags can be applied to log events in many ways, and a log event + can have multiple tags with the same key (like team) and different values. + This means the same log event can be visible to roles whose restriction + queries are scoped to different team values. See [How to Set Up RBAC for + Logs](https://docs.datadoghq.com/logs/guide/logs-rbac/?tab=api#restrict- + access-to-logs) for details on how to add restriction queries. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "LogsRestrictionQueries" API + + @skip-go @skip-java @skip-python @skip-ruby @skip-rust @skip-terraform-config @skip-typescript @skip-validation @team:DataDog/logs-app + Scenario: Create a restriction query returns "Bad Request" response + Given operation "CreateRestrictionQuery" enabled + And new "CreateRestrictionQuery" request + And body with value {"test": "bad_request"} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/logs-app + Scenario: Create a restriction query returns "OK" response + Given operation "CreateRestrictionQuery" enabled + And new "CreateRestrictionQuery" request + And body with value {"data": {"attributes": {"restriction_query": "env:sandbox"}, "type": "logs_restriction_queries"}} + When the request is sent + Then the response status is 200 OK + + @skip-terraform-config @team:DataDog/logs-app + Scenario: Delete a restriction query returns "Bad Request" response + Given operation "DeleteRestrictionQuery" enabled + And new "DeleteRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "malformed_id" + When the request is sent + Then the response status is 400 Bad Request + + @skip-terraform-config @team:DataDog/logs-app + Scenario: Delete a restriction query returns "Not found" response + Given operation "DeleteRestrictionQuery" enabled + And new "DeleteRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "00000000-0000-0000-0000-000000000000" + When the request is sent + Then the response status is 404 Not found + + @team:DataDog/logs-app + Scenario: Delete a restriction query returns "OK" response + Given operation "DeleteRestrictionQuery" enabled + And there is a valid "restriction_query" in the system + And new "DeleteRestrictionQuery" request + And request contains "restriction_query_id" parameter from "restriction_query.data.id" + When the request is sent + Then the response status is 204 OK + + @skip-terraform-config @team:DataDog/logs-app + Scenario: Get a restriction query returns "Bad Request" response + Given operation "GetRestrictionQuery" enabled + And new "GetRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "malformed_id" + When the request is sent + Then the response status is 400 Bad Request + + @skip-terraform-config @team:DataDog/logs-app + Scenario: Get a restriction query returns "Not found" response + Given operation "GetRestrictionQuery" enabled + And new "GetRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "00000000-0000-0000-0000-000000000000" + When the request is sent + Then the response status is 404 Not found + + @team:DataDog/logs-app + Scenario: Get a restriction query returns "OK" response + Given operation "GetRestrictionQuery" enabled + And there is a valid "restriction_query" in the system + And new "GetRestrictionQuery" request + And request contains "restriction_query_id" parameter from "restriction_query.data.id" + When the request is sent + Then the response status is 200 OK + + @skip-terraform-config @team:DataDog/logs-app + Scenario: Get all restriction queries for a given user returns "Bad Request" response + Given operation "ListUserRestrictionQueries" enabled + And new "ListUserRestrictionQueries" request + And request contains "user_id" parameter with value "malformed_id" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/logs-app + Scenario: Get all restriction queries for a given user returns "Not found" response + Given operation "ListUserRestrictionQueries" enabled + And new "ListUserRestrictionQueries" request + And request contains "user_id" parameter with value "00000000-0000-0000-0000-000000000000" + When the request is sent + Then the response status is 400 Bad Request + + @skip @team:DataDog/logs-app + Scenario: Get all restriction queries for a given user returns "OK" response + Given operation "ListUserRestrictionQueries" enabled + And there is a valid "user" in the system + And new "ListUserRestrictionQueries" request + And request contains "user_id" parameter from "user.data.id" + When the request is sent + Then the response status is 200 OK + + @skip-terraform-config @team:DataDog/logs-app + Scenario: Get restriction query for a given role returns "Bad Request" response + Given operation "GetRoleRestrictionQuery" enabled + And new "GetRoleRestrictionQuery" request + And request contains "role_id" parameter with value "malformed_id" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/logs-app + Scenario: Get restriction query for a given role returns "Not found" response + Given operation "GetRoleRestrictionQuery" enabled + And new "GetRoleRestrictionQuery" request + And request contains "role_id" parameter with value "00000000-0000-0000-0000-000000000000" + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/logs-app + Scenario: Get restriction query for a given role returns "OK" response + Given operation "GetRoleRestrictionQuery" enabled + And there is a valid "role" in the system + And new "GetRoleRestrictionQuery" request + And request contains "role_id" parameter from "role.data.id" + When the request is sent + Then the response status is 200 OK + + @skip-terraform-config @team:DataDog/logs-app + Scenario: Grant role to a restriction query returns "Bad Request" response + Given operation "AddRoleToRestrictionQuery" enabled + And new "AddRoleToRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "malformed_id" + And body with value {"data": {"id": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", "type": "roles"}} + When the request is sent + Then the response status is 404 Not found + + @skip-terraform-config @team:DataDog/logs-app + Scenario: Grant role to a restriction query returns "Not found" response + Given operation "AddRoleToRestrictionQuery" enabled + And new "AddRoleToRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "00000000-0000-0000-0000-000000000000" + And body with value {"data": {"id": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", "type": "roles"}} + When the request is sent + Then the response status is 404 Not found + + @team:DataDog/logs-app + Scenario: Grant role to a restriction query returns "OK" response + Given operation "AddRoleToRestrictionQuery" enabled + And there is a valid "restriction_query" in the system + And there is a valid "role" in the system + And new "AddRoleToRestrictionQuery" request + And request contains "restriction_query_id" parameter from "restriction_query.data.id" + And body with value {"data": {"id": "{{ role.data.id }}", "type": "roles"}} + When the request is sent + Then the response status is 204 OK + + @skip-terraform-config @team:DataDog/logs-app + Scenario: List restriction queries returns "OK" response + Given operation "ListRestrictionQueries" enabled + And new "ListRestrictionQueries" request + When the request is sent + Then the response status is 200 OK + + @skip-terraform-config @team:DataDog/logs-app + Scenario: List roles for a restriction query returns "Bad Request" response + Given operation "ListRestrictionQueryRoles" enabled + And new "ListRestrictionQueryRoles" request + And request contains "restriction_query_id" parameter with value "malformed_id" + When the request is sent + Then the response status is 400 Bad Request + + @skip-terraform-config @team:DataDog/logs-app + Scenario: List roles for a restriction query returns "Not found" response + Given operation "ListRestrictionQueryRoles" enabled + And new "ListRestrictionQueryRoles" request + And request contains "restriction_query_id" parameter with value "00000000-0000-0000-0000-000000000000" + When the request is sent + Then the response status is 404 Not found + + @team:DataDog/logs-app + Scenario: List roles for a restriction query returns "OK" response + Given operation "ListRestrictionQueryRoles" enabled + And there is a valid "restriction_query" in the system + And new "ListRestrictionQueryRoles" request + And request contains "restriction_query_id" parameter from "restriction_query.data.id" + When the request is sent + Then the response status is 200 OK + + @skip @team:DataDog/logs-app + Scenario: Replace a restriction query returns "Bad Request" response + Given operation "ReplaceRestrictionQuery" enabled + And new "ReplaceRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "malformed_id" + And body with value {"data": {"attributes": {"restriction_query": "env:sandbox"}, "type": "logs_restriction_queries"}} + When the request is sent + Then the response status is 400 Bad Request + + @skip @team:DataDog/logs-app + Scenario: Replace a restriction query returns "Not found" response + Given operation "ReplaceRestrictionQuery" enabled + And new "ReplaceRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "00000000-0000-0000-0000-000000000000" + And body with value {"data": {"attributes": {"restriction_query": "env:sandbox"}, "type": "logs_restriction_queries"}} + When the request is sent + Then the response status is 404 Not found + + @skip @team:DataDog/logs-app + Scenario: Replace a restriction query returns "OK" response + Given operation "ReplaceRestrictionQuery" enabled + And there is a valid "restriction_query" in the system + And new "ReplaceRestrictionQuery" request + And request contains "restriction_query_id" parameter from "restriction_query.data.id" + And body with value {"data": {"attributes": {"restriction_query": "env:staging"}, "type": "logs_restriction_queries"}} + When the request is sent + Then the response status is 200 OK + + @skip @skip-terraform-config @team:DataDog/logs-app + Scenario: Revoke role from a restriction query returns "Bad Request" response + Given operation "RemoveRoleFromRestrictionQuery" enabled + And new "RemoveRoleFromRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "malformed_id" + And body with value {"data": {"id": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", "type": "roles"}} + When the request is sent + Then the response status is 400 Bad Request + + @skip @skip-terraform-config @team:DataDog/logs-app + Scenario: Revoke role from a restriction query returns "Not found" response + Given operation "RemoveRoleFromRestrictionQuery" enabled + And new "RemoveRoleFromRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "00000000-0000-0000-0000-000000000000" + And body with value {"data": {"id": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", "type": "roles"}} + When the request is sent + Then the response status is 404 Not found + + @skip @team:DataDog/logs-app + Scenario: Revoke role from a restriction query returns "OK" response + Given operation "RemoveRoleFromRestrictionQuery" enabled + And there is a valid "restriction_query" in the system + And there is a valid "role" in the system + And new "RemoveRoleFromRestrictionQuery" request + And request contains "restriction_query_id" parameter from "restriction_query.data.id" + And body with value {"data": {"id": "{{ role.data.id }}", "type": "roles"}} + When the request is sent + Then the response status is 204 OK + + @skip @skip-terraform-config @team:DataDog/logs-app + Scenario: Update a restriction query returns "Bad Request" response + Given operation "UpdateRestrictionQuery" enabled + And new "UpdateRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "malformed_id" + And body with value {"data": {"attributes": {"restriction_query": "env:sandbox"}, "type": "logs_restriction_queries"}} + When the request is sent + Then the response status is 400 Bad Request + + @skip @skip-terraform-config @team:DataDog/logs-app + Scenario: Update a restriction query returns "Not found" response + Given operation "UpdateRestrictionQuery" enabled + And new "UpdateRestrictionQuery" request + And request contains "restriction_query_id" parameter with value "00000000-0000-0000-0000-000000000000" + And body with value {"data": {"attributes": {"restriction_query": "env:sandbox"}, "type": "logs_restriction_queries"}} + When the request is sent + Then the response status is 404 Not found + + @skip @team:DataDog/logs-app + Scenario: Update a restriction query returns "OK" response + Given operation "UpdateRestrictionQuery" enabled + And there is a valid "restriction_query" in the system + And new "UpdateRestrictionQuery" request + And request contains "restriction_query_id" parameter from "restriction_query.data.id" + And body with value {"data": {"attributes": {"restriction_query": "env:production"}, "type": "logs_restriction_queries"}} + When the request is sent + Then the response status is 200 OK diff --git a/features/v2/undo.json b/features/v2/undo.json index dba9a5e29d71..a327f0545545 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -2377,6 +2377,79 @@ "type": "idempotent" } }, + "ListRestrictionQueries": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "safe" + } + }, + "CreateRestrictionQuery": { + "tag": "Logs Restriction Queries", + "undo": { + "operationId": "DeleteRestrictionQuery", + "parameters": [ + { + "name": "restriction_query_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "GetRoleRestrictionQuery": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "safe" + } + }, + "ListUserRestrictionQueries": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "safe" + } + }, + "DeleteRestrictionQuery": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "idempotent" + } + }, + "GetRestrictionQuery": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "safe" + } + }, + "UpdateRestrictionQuery": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "idempotent" + } + }, + "ReplaceRestrictionQuery": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "idempotent" + } + }, + "RemoveRoleFromRestrictionQuery": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "idempotent" + } + }, + "ListRestrictionQueryRoles": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "safe" + } + }, + "AddRoleToRestrictionQuery": { + "tag": "Logs Restriction Queries", + "undo": { + "type": "safe" + } + }, "ListLogsGet": { "tag": "Logs", "undo": { diff --git a/packages/datadog-api-client-common/configuration.ts b/packages/datadog-api-client-common/configuration.ts index a711ffcddf04..e70bb1301aaa 100644 --- a/packages/datadog-api-client-common/configuration.ts +++ b/packages/datadog-api-client-common/configuration.ts @@ -304,6 +304,17 @@ export function createConfiguration( "v2.updateIncidentNotificationTemplate": false, "v2.updateIncidentTodo": false, "v2.updateIncidentType": false, + "v2.addRoleToRestrictionQuery": false, + "v2.createRestrictionQuery": false, + "v2.deleteRestrictionQuery": false, + "v2.getRestrictionQuery": false, + "v2.getRoleRestrictionQuery": false, + "v2.listRestrictionQueries": false, + "v2.listRestrictionQueryRoles": false, + "v2.listUserRestrictionQueries": false, + "v2.removeRoleFromRestrictionQuery": false, + "v2.replaceRestrictionQuery": false, + "v2.updateRestrictionQuery": false, "v2.createMonitorUserTemplate": false, "v2.deleteMonitorUserTemplate": false, "v2.getMonitorUserTemplate": false, diff --git a/packages/datadog-api-client-v2/apis/LogsRestrictionQueriesApi.ts b/packages/datadog-api-client-v2/apis/LogsRestrictionQueriesApi.ts new file mode 100644 index 000000000000..4adf8155adb9 --- /dev/null +++ b/packages/datadog-api-client-v2/apis/LogsRestrictionQueriesApi.ts @@ -0,0 +1,1645 @@ +import { + BaseAPIRequestFactory, + RequiredError, +} from "../../datadog-api-client-common/baseapi"; +import { + Configuration, + applySecurityAuthentication, +} from "../../datadog-api-client-common/configuration"; +import { + RequestContext, + HttpMethod, + ResponseContext, +} from "../../datadog-api-client-common/http/http"; + +import { logger } from "../../../logger"; +import { ObjectSerializer } from "../models/ObjectSerializer"; +import { ApiException } from "../../datadog-api-client-common/exception"; + +import { APIErrorResponse } from "../models/APIErrorResponse"; +import { RelationshipToRole } from "../models/RelationshipToRole"; +import { RestrictionQueryCreatePayload } from "../models/RestrictionQueryCreatePayload"; +import { RestrictionQueryListResponse } from "../models/RestrictionQueryListResponse"; +import { RestrictionQueryRolesResponse } from "../models/RestrictionQueryRolesResponse"; +import { RestrictionQueryUpdatePayload } from "../models/RestrictionQueryUpdatePayload"; +import { RestrictionQueryWithoutRelationshipsResponse } from "../models/RestrictionQueryWithoutRelationshipsResponse"; +import { RestrictionQueryWithRelationshipsResponse } from "../models/RestrictionQueryWithRelationshipsResponse"; + +export class LogsRestrictionQueriesApiRequestFactory extends BaseAPIRequestFactory { + public async addRoleToRestrictionQuery( + restrictionQueryId: string, + body: RelationshipToRole, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'addRoleToRestrictionQuery'"); + if (!_config.unstableOperations["v2.addRoleToRestrictionQuery"]) { + throw new Error( + "Unstable operation 'addRoleToRestrictionQuery' is disabled" + ); + } + + // verify required parameter 'restrictionQueryId' is not null or undefined + if (restrictionQueryId === null || restrictionQueryId === undefined) { + throw new RequiredError( + "restrictionQueryId", + "addRoleToRestrictionQuery" + ); + } + + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError("body", "addRoleToRestrictionQuery"); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles".replace( + "{restriction_query_id}", + encodeURIComponent(String(restrictionQueryId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.addRoleToRestrictionQuery") + .makeRequestContext(localVarPath, HttpMethod.POST); + requestContext.setHeaderParam("Accept", "*/*"); + requestContext.setHttpConfig(_config.httpConfig); + + // Body Params + const contentType = ObjectSerializer.getPreferredMediaType([ + "application/json", + ]); + requestContext.setHeaderParam("Content-Type", contentType); + const serializedBody = ObjectSerializer.stringify( + ObjectSerializer.serialize(body, "RelationshipToRole", ""), + contentType + ); + requestContext.setBody(serializedBody); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async createRestrictionQuery( + body: RestrictionQueryCreatePayload, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'createRestrictionQuery'"); + if (!_config.unstableOperations["v2.createRestrictionQuery"]) { + throw new Error( + "Unstable operation 'createRestrictionQuery' is disabled" + ); + } + + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError("body", "createRestrictionQuery"); + } + + // Path Params + const localVarPath = "/api/v2/logs/config/restriction_queries"; + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.createRestrictionQuery") + .makeRequestContext(localVarPath, HttpMethod.POST); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Body Params + const contentType = ObjectSerializer.getPreferredMediaType([ + "application/json", + ]); + requestContext.setHeaderParam("Content-Type", contentType); + const serializedBody = ObjectSerializer.stringify( + ObjectSerializer.serialize(body, "RestrictionQueryCreatePayload", ""), + contentType + ); + requestContext.setBody(serializedBody); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async deleteRestrictionQuery( + restrictionQueryId: string, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'deleteRestrictionQuery'"); + if (!_config.unstableOperations["v2.deleteRestrictionQuery"]) { + throw new Error( + "Unstable operation 'deleteRestrictionQuery' is disabled" + ); + } + + // verify required parameter 'restrictionQueryId' is not null or undefined + if (restrictionQueryId === null || restrictionQueryId === undefined) { + throw new RequiredError("restrictionQueryId", "deleteRestrictionQuery"); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/{restriction_query_id}".replace( + "{restriction_query_id}", + encodeURIComponent(String(restrictionQueryId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.deleteRestrictionQuery") + .makeRequestContext(localVarPath, HttpMethod.DELETE); + requestContext.setHeaderParam("Accept", "*/*"); + requestContext.setHttpConfig(_config.httpConfig); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async getRestrictionQuery( + restrictionQueryId: string, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'getRestrictionQuery'"); + if (!_config.unstableOperations["v2.getRestrictionQuery"]) { + throw new Error("Unstable operation 'getRestrictionQuery' is disabled"); + } + + // verify required parameter 'restrictionQueryId' is not null or undefined + if (restrictionQueryId === null || restrictionQueryId === undefined) { + throw new RequiredError("restrictionQueryId", "getRestrictionQuery"); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/{restriction_query_id}".replace( + "{restriction_query_id}", + encodeURIComponent(String(restrictionQueryId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.getRestrictionQuery") + .makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async getRoleRestrictionQuery( + roleId: string, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'getRoleRestrictionQuery'"); + if (!_config.unstableOperations["v2.getRoleRestrictionQuery"]) { + throw new Error( + "Unstable operation 'getRoleRestrictionQuery' is disabled" + ); + } + + // verify required parameter 'roleId' is not null or undefined + if (roleId === null || roleId === undefined) { + throw new RequiredError("roleId", "getRoleRestrictionQuery"); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/role/{role_id}".replace( + "{role_id}", + encodeURIComponent(String(roleId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.getRoleRestrictionQuery") + .makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async listRestrictionQueries( + pageSize?: number, + pageNumber?: number, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'listRestrictionQueries'"); + if (!_config.unstableOperations["v2.listRestrictionQueries"]) { + throw new Error( + "Unstable operation 'listRestrictionQueries' is disabled" + ); + } + + // Path Params + const localVarPath = "/api/v2/logs/config/restriction_queries"; + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.listRestrictionQueries") + .makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Query Params + if (pageSize !== undefined) { + requestContext.setQueryParam( + "page[size]", + ObjectSerializer.serialize(pageSize, "number", "int64"), + "" + ); + } + if (pageNumber !== undefined) { + requestContext.setQueryParam( + "page[number]", + ObjectSerializer.serialize(pageNumber, "number", "int64"), + "" + ); + } + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async listRestrictionQueryRoles( + restrictionQueryId: string, + pageSize?: number, + pageNumber?: number, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'listRestrictionQueryRoles'"); + if (!_config.unstableOperations["v2.listRestrictionQueryRoles"]) { + throw new Error( + "Unstable operation 'listRestrictionQueryRoles' is disabled" + ); + } + + // verify required parameter 'restrictionQueryId' is not null or undefined + if (restrictionQueryId === null || restrictionQueryId === undefined) { + throw new RequiredError( + "restrictionQueryId", + "listRestrictionQueryRoles" + ); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles".replace( + "{restriction_query_id}", + encodeURIComponent(String(restrictionQueryId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.listRestrictionQueryRoles") + .makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Query Params + if (pageSize !== undefined) { + requestContext.setQueryParam( + "page[size]", + ObjectSerializer.serialize(pageSize, "number", "int64"), + "" + ); + } + if (pageNumber !== undefined) { + requestContext.setQueryParam( + "page[number]", + ObjectSerializer.serialize(pageNumber, "number", "int64"), + "" + ); + } + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async listUserRestrictionQueries( + userId: string, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'listUserRestrictionQueries'"); + if (!_config.unstableOperations["v2.listUserRestrictionQueries"]) { + throw new Error( + "Unstable operation 'listUserRestrictionQueries' is disabled" + ); + } + + // verify required parameter 'userId' is not null or undefined + if (userId === null || userId === undefined) { + throw new RequiredError("userId", "listUserRestrictionQueries"); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/user/{user_id}".replace( + "{user_id}", + encodeURIComponent(String(userId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.listUserRestrictionQueries") + .makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async removeRoleFromRestrictionQuery( + restrictionQueryId: string, + body: RelationshipToRole, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'removeRoleFromRestrictionQuery'"); + if (!_config.unstableOperations["v2.removeRoleFromRestrictionQuery"]) { + throw new Error( + "Unstable operation 'removeRoleFromRestrictionQuery' is disabled" + ); + } + + // verify required parameter 'restrictionQueryId' is not null or undefined + if (restrictionQueryId === null || restrictionQueryId === undefined) { + throw new RequiredError( + "restrictionQueryId", + "removeRoleFromRestrictionQuery" + ); + } + + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError("body", "removeRoleFromRestrictionQuery"); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles".replace( + "{restriction_query_id}", + encodeURIComponent(String(restrictionQueryId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.removeRoleFromRestrictionQuery") + .makeRequestContext(localVarPath, HttpMethod.DELETE); + requestContext.setHeaderParam("Accept", "*/*"); + requestContext.setHttpConfig(_config.httpConfig); + + // Body Params + const contentType = ObjectSerializer.getPreferredMediaType([ + "application/json", + ]); + requestContext.setHeaderParam("Content-Type", contentType); + const serializedBody = ObjectSerializer.stringify( + ObjectSerializer.serialize(body, "RelationshipToRole", ""), + contentType + ); + requestContext.setBody(serializedBody); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async replaceRestrictionQuery( + restrictionQueryId: string, + body: RestrictionQueryUpdatePayload, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'replaceRestrictionQuery'"); + if (!_config.unstableOperations["v2.replaceRestrictionQuery"]) { + throw new Error( + "Unstable operation 'replaceRestrictionQuery' is disabled" + ); + } + + // verify required parameter 'restrictionQueryId' is not null or undefined + if (restrictionQueryId === null || restrictionQueryId === undefined) { + throw new RequiredError("restrictionQueryId", "replaceRestrictionQuery"); + } + + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError("body", "replaceRestrictionQuery"); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/{restriction_query_id}".replace( + "{restriction_query_id}", + encodeURIComponent(String(restrictionQueryId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.replaceRestrictionQuery") + .makeRequestContext(localVarPath, HttpMethod.PUT); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Body Params + const contentType = ObjectSerializer.getPreferredMediaType([ + "application/json", + ]); + requestContext.setHeaderParam("Content-Type", contentType); + const serializedBody = ObjectSerializer.stringify( + ObjectSerializer.serialize(body, "RestrictionQueryUpdatePayload", ""), + contentType + ); + requestContext.setBody(serializedBody); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } + + public async updateRestrictionQuery( + restrictionQueryId: string, + body: RestrictionQueryUpdatePayload, + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + logger.warn("Using unstable operation 'updateRestrictionQuery'"); + if (!_config.unstableOperations["v2.updateRestrictionQuery"]) { + throw new Error( + "Unstable operation 'updateRestrictionQuery' is disabled" + ); + } + + // verify required parameter 'restrictionQueryId' is not null or undefined + if (restrictionQueryId === null || restrictionQueryId === undefined) { + throw new RequiredError("restrictionQueryId", "updateRestrictionQuery"); + } + + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError("body", "updateRestrictionQuery"); + } + + // Path Params + const localVarPath = + "/api/v2/logs/config/restriction_queries/{restriction_query_id}".replace( + "{restriction_query_id}", + encodeURIComponent(String(restrictionQueryId)) + ); + + // Make Request Context + const requestContext = _config + .getServer("v2.LogsRestrictionQueriesApi.updateRestrictionQuery") + .makeRequestContext(localVarPath, HttpMethod.PATCH); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Body Params + const contentType = ObjectSerializer.getPreferredMediaType([ + "application/json", + ]); + requestContext.setHeaderParam("Content-Type", contentType); + const serializedBody = ObjectSerializer.stringify( + ObjectSerializer.serialize(body, "RestrictionQueryUpdatePayload", ""), + contentType + ); + requestContext.setBody(serializedBody); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + ]); + + return requestContext; + } +} + +export class LogsRestrictionQueriesApiResponseProcessor { + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to addRoleToRestrictionQuery + * @throws ApiException if the response code was not in [200, 299] + */ + public async addRoleToRestrictionQuery( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 204) { + return; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + return; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to createRestrictionQuery + * @throws ApiException if the response code was not in [200, 299] + */ + public async createRestrictionQuery( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: RestrictionQueryWithoutRelationshipsResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryWithoutRelationshipsResponse" + ) as RestrictionQueryWithoutRelationshipsResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: RestrictionQueryWithoutRelationshipsResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryWithoutRelationshipsResponse", + "" + ) as RestrictionQueryWithoutRelationshipsResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to deleteRestrictionQuery + * @throws ApiException if the response code was not in [200, 299] + */ + public async deleteRestrictionQuery( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 204) { + return; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + return; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to getRestrictionQuery + * @throws ApiException if the response code was not in [200, 299] + */ + public async getRestrictionQuery( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: RestrictionQueryWithRelationshipsResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryWithRelationshipsResponse" + ) as RestrictionQueryWithRelationshipsResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: RestrictionQueryWithRelationshipsResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryWithRelationshipsResponse", + "" + ) as RestrictionQueryWithRelationshipsResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to getRoleRestrictionQuery + * @throws ApiException if the response code was not in [200, 299] + */ + public async getRoleRestrictionQuery( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: RestrictionQueryListResponse = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryListResponse" + ) as RestrictionQueryListResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: RestrictionQueryListResponse = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryListResponse", + "" + ) as RestrictionQueryListResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to listRestrictionQueries + * @throws ApiException if the response code was not in [200, 299] + */ + public async listRestrictionQueries( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: RestrictionQueryListResponse = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryListResponse" + ) as RestrictionQueryListResponse; + return body; + } + if (response.httpStatusCode === 403 || response.httpStatusCode === 429) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: RestrictionQueryListResponse = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryListResponse", + "" + ) as RestrictionQueryListResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to listRestrictionQueryRoles + * @throws ApiException if the response code was not in [200, 299] + */ + public async listRestrictionQueryRoles( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: RestrictionQueryRolesResponse = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryRolesResponse" + ) as RestrictionQueryRolesResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: RestrictionQueryRolesResponse = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryRolesResponse", + "" + ) as RestrictionQueryRolesResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to listUserRestrictionQueries + * @throws ApiException if the response code was not in [200, 299] + */ + public async listUserRestrictionQueries( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: RestrictionQueryListResponse = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryListResponse" + ) as RestrictionQueryListResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: RestrictionQueryListResponse = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryListResponse", + "" + ) as RestrictionQueryListResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to removeRoleFromRestrictionQuery + * @throws ApiException if the response code was not in [200, 299] + */ + public async removeRoleFromRestrictionQuery( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 204) { + return; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + return; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to replaceRestrictionQuery + * @throws ApiException if the response code was not in [200, 299] + */ + public async replaceRestrictionQuery( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: RestrictionQueryWithoutRelationshipsResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryWithoutRelationshipsResponse" + ) as RestrictionQueryWithoutRelationshipsResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: RestrictionQueryWithoutRelationshipsResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryWithoutRelationshipsResponse", + "" + ) as RestrictionQueryWithoutRelationshipsResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } + + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to updateRestrictionQuery + * @throws ApiException if the response code was not in [200, 299] + */ + public async updateRestrictionQuery( + response: ResponseContext + ): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: RestrictionQueryWithoutRelationshipsResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryWithoutRelationshipsResponse" + ) as RestrictionQueryWithoutRelationshipsResponse; + return body; + } + if ( + response.httpStatusCode === 400 || + response.httpStatusCode === 403 || + response.httpStatusCode === 404 || + response.httpStatusCode === 429 + ) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: RestrictionQueryWithoutRelationshipsResponse = + ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "RestrictionQueryWithoutRelationshipsResponse", + "" + ) as RestrictionQueryWithoutRelationshipsResponse; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } +} + +export interface LogsRestrictionQueriesApiAddRoleToRestrictionQueryRequest { + /** + * The ID of the restriction query. + * @type string + */ + restrictionQueryId: string; + /** + * @type RelationshipToRole + */ + body: RelationshipToRole; +} + +export interface LogsRestrictionQueriesApiCreateRestrictionQueryRequest { + /** + * @type RestrictionQueryCreatePayload + */ + body: RestrictionQueryCreatePayload; +} + +export interface LogsRestrictionQueriesApiDeleteRestrictionQueryRequest { + /** + * The ID of the restriction query. + * @type string + */ + restrictionQueryId: string; +} + +export interface LogsRestrictionQueriesApiGetRestrictionQueryRequest { + /** + * The ID of the restriction query. + * @type string + */ + restrictionQueryId: string; +} + +export interface LogsRestrictionQueriesApiGetRoleRestrictionQueryRequest { + /** + * The ID of the role. + * @type string + */ + roleId: string; +} + +export interface LogsRestrictionQueriesApiListRestrictionQueriesRequest { + /** + * Size for a given page. The maximum allowed value is 100. + * @type number + */ + pageSize?: number; + /** + * Specific page number to return. + * @type number + */ + pageNumber?: number; +} + +export interface LogsRestrictionQueriesApiListRestrictionQueryRolesRequest { + /** + * The ID of the restriction query. + * @type string + */ + restrictionQueryId: string; + /** + * Size for a given page. The maximum allowed value is 100. + * @type number + */ + pageSize?: number; + /** + * Specific page number to return. + * @type number + */ + pageNumber?: number; +} + +export interface LogsRestrictionQueriesApiListUserRestrictionQueriesRequest { + /** + * The ID of the user. + * @type string + */ + userId: string; +} + +export interface LogsRestrictionQueriesApiRemoveRoleFromRestrictionQueryRequest { + /** + * The ID of the restriction query. + * @type string + */ + restrictionQueryId: string; + /** + * @type RelationshipToRole + */ + body: RelationshipToRole; +} + +export interface LogsRestrictionQueriesApiReplaceRestrictionQueryRequest { + /** + * The ID of the restriction query. + * @type string + */ + restrictionQueryId: string; + /** + * @type RestrictionQueryUpdatePayload + */ + body: RestrictionQueryUpdatePayload; +} + +export interface LogsRestrictionQueriesApiUpdateRestrictionQueryRequest { + /** + * The ID of the restriction query. + * @type string + */ + restrictionQueryId: string; + /** + * @type RestrictionQueryUpdatePayload + */ + body: RestrictionQueryUpdatePayload; +} + +export class LogsRestrictionQueriesApi { + private requestFactory: LogsRestrictionQueriesApiRequestFactory; + private responseProcessor: LogsRestrictionQueriesApiResponseProcessor; + private configuration: Configuration; + + public constructor( + configuration: Configuration, + requestFactory?: LogsRestrictionQueriesApiRequestFactory, + responseProcessor?: LogsRestrictionQueriesApiResponseProcessor + ) { + this.configuration = configuration; + this.requestFactory = + requestFactory || + new LogsRestrictionQueriesApiRequestFactory(configuration); + this.responseProcessor = + responseProcessor || new LogsRestrictionQueriesApiResponseProcessor(); + } + + /** + * Adds a role to a restriction query. + * + * **Note**: This operation automatically grants the `logs_read_data` permission to the role if it doesn't already have it. + * @param param The request object + */ + public addRoleToRestrictionQuery( + param: LogsRestrictionQueriesApiAddRoleToRestrictionQueryRequest, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.addRoleToRestrictionQuery( + param.restrictionQueryId, + param.body, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.addRoleToRestrictionQuery( + responseContext + ); + }); + }); + } + + /** + * Create a new restriction query for your organization. + * @param param The request object + */ + public createRestrictionQuery( + param: LogsRestrictionQueriesApiCreateRestrictionQueryRequest, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.createRestrictionQuery( + param.body, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.createRestrictionQuery(responseContext); + }); + }); + } + + /** + * Deletes a restriction query. + * @param param The request object + */ + public deleteRestrictionQuery( + param: LogsRestrictionQueriesApiDeleteRestrictionQueryRequest, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.deleteRestrictionQuery( + param.restrictionQueryId, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.deleteRestrictionQuery(responseContext); + }); + }); + } + + /** + * Get a restriction query in the organization specified by the restriction query's `restriction_query_id`. + * @param param The request object + */ + public getRestrictionQuery( + param: LogsRestrictionQueriesApiGetRestrictionQueryRequest, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.getRestrictionQuery( + param.restrictionQueryId, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.getRestrictionQuery(responseContext); + }); + }); + } + + /** + * Get restriction query for a given role. + * @param param The request object + */ + public getRoleRestrictionQuery( + param: LogsRestrictionQueriesApiGetRoleRestrictionQueryRequest, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.getRoleRestrictionQuery( + param.roleId, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.getRoleRestrictionQuery( + responseContext + ); + }); + }); + } + + /** + * Returns all restriction queries, including their names and IDs. + * @param param The request object + */ + public listRestrictionQueries( + param: LogsRestrictionQueriesApiListRestrictionQueriesRequest = {}, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.listRestrictionQueries( + param.pageSize, + param.pageNumber, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.listRestrictionQueries(responseContext); + }); + }); + } + + /** + * Returns all roles that have a given restriction query. + * @param param The request object + */ + public listRestrictionQueryRoles( + param: LogsRestrictionQueriesApiListRestrictionQueryRolesRequest, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.listRestrictionQueryRoles( + param.restrictionQueryId, + param.pageSize, + param.pageNumber, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.listRestrictionQueryRoles( + responseContext + ); + }); + }); + } + + /** + * Get all restriction queries for a given user. + * @param param The request object + */ + public listUserRestrictionQueries( + param: LogsRestrictionQueriesApiListUserRestrictionQueriesRequest, + options?: Configuration + ): Promise { + const requestContextPromise = + this.requestFactory.listUserRestrictionQueries(param.userId, options); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.listUserRestrictionQueries( + responseContext + ); + }); + }); + } + + /** + * Removes a role from a restriction query. + * @param param The request object + */ + public removeRoleFromRestrictionQuery( + param: LogsRestrictionQueriesApiRemoveRoleFromRestrictionQueryRequest, + options?: Configuration + ): Promise { + const requestContextPromise = + this.requestFactory.removeRoleFromRestrictionQuery( + param.restrictionQueryId, + param.body, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.removeRoleFromRestrictionQuery( + responseContext + ); + }); + }); + } + + /** + * Replace a restriction query. + * @param param The request object + */ + public replaceRestrictionQuery( + param: LogsRestrictionQueriesApiReplaceRestrictionQueryRequest, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.replaceRestrictionQuery( + param.restrictionQueryId, + param.body, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.replaceRestrictionQuery( + responseContext + ); + }); + }); + } + + /** + * Edit a restriction query. + * @param param The request object + */ + public updateRestrictionQuery( + param: LogsRestrictionQueriesApiUpdateRestrictionQueryRequest, + options?: Configuration + ): Promise { + const requestContextPromise = this.requestFactory.updateRestrictionQuery( + param.restrictionQueryId, + param.body, + options + ); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.updateRestrictionQuery(responseContext); + }); + }); + } +} diff --git a/packages/datadog-api-client-v2/index.ts b/packages/datadog-api-client-v2/index.ts index ceb12f4732e6..8e8eda6d9ecd 100644 --- a/packages/datadog-api-client-v2/index.ts +++ b/packages/datadog-api-client-v2/index.ts @@ -478,6 +478,21 @@ export { LogsMetricsApi, } from "./apis/LogsMetricsApi"; +export { + LogsRestrictionQueriesApiAddRoleToRestrictionQueryRequest, + LogsRestrictionQueriesApiCreateRestrictionQueryRequest, + LogsRestrictionQueriesApiDeleteRestrictionQueryRequest, + LogsRestrictionQueriesApiGetRestrictionQueryRequest, + LogsRestrictionQueriesApiGetRoleRestrictionQueryRequest, + LogsRestrictionQueriesApiListRestrictionQueriesRequest, + LogsRestrictionQueriesApiListRestrictionQueryRolesRequest, + LogsRestrictionQueriesApiListUserRestrictionQueriesRequest, + LogsRestrictionQueriesApiRemoveRoleFromRestrictionQueryRequest, + LogsRestrictionQueriesApiReplaceRestrictionQueryRequest, + LogsRestrictionQueriesApiUpdateRestrictionQueryRequest, + LogsRestrictionQueriesApi, +} from "./apis/LogsRestrictionQueriesApi"; + export { MetricsApiCreateBulkTagsMetricsConfigurationRequest, MetricsApiCreateTagConfigurationRequest, @@ -2769,6 +2784,7 @@ export { LogsQueryFilter } from "./models/LogsQueryFilter"; export { LogsQueryOptions } from "./models/LogsQueryOptions"; export { LogsResponseMetadata } from "./models/LogsResponseMetadata"; export { LogsResponseMetadataPage } from "./models/LogsResponseMetadataPage"; +export { LogsRestrictionQueriesType } from "./models/LogsRestrictionQueriesType"; export { LogsSort } from "./models/LogsSort"; export { LogsSortOrder } from "./models/LogsSortOrder"; export { LogsStorageTier } from "./models/LogsStorageTier"; @@ -3485,6 +3501,22 @@ export { RestrictionPolicyBinding } from "./models/RestrictionPolicyBinding"; export { RestrictionPolicyResponse } from "./models/RestrictionPolicyResponse"; export { RestrictionPolicyType } from "./models/RestrictionPolicyType"; export { RestrictionPolicyUpdateRequest } from "./models/RestrictionPolicyUpdateRequest"; +export { RestrictionQueryAttributes } from "./models/RestrictionQueryAttributes"; +export { RestrictionQueryCreateAttributes } from "./models/RestrictionQueryCreateAttributes"; +export { RestrictionQueryCreateData } from "./models/RestrictionQueryCreateData"; +export { RestrictionQueryCreatePayload } from "./models/RestrictionQueryCreatePayload"; +export { RestrictionQueryListResponse } from "./models/RestrictionQueryListResponse"; +export { RestrictionQueryResponseIncludedItem } from "./models/RestrictionQueryResponseIncludedItem"; +export { RestrictionQueryRole } from "./models/RestrictionQueryRole"; +export { RestrictionQueryRoleAttribute } from "./models/RestrictionQueryRoleAttribute"; +export { RestrictionQueryRolesResponse } from "./models/RestrictionQueryRolesResponse"; +export { RestrictionQueryUpdateAttributes } from "./models/RestrictionQueryUpdateAttributes"; +export { RestrictionQueryUpdateData } from "./models/RestrictionQueryUpdateData"; +export { RestrictionQueryUpdatePayload } from "./models/RestrictionQueryUpdatePayload"; +export { RestrictionQueryWithoutRelationships } from "./models/RestrictionQueryWithoutRelationships"; +export { RestrictionQueryWithoutRelationshipsResponse } from "./models/RestrictionQueryWithoutRelationshipsResponse"; +export { RestrictionQueryWithRelationships } from "./models/RestrictionQueryWithRelationships"; +export { RestrictionQueryWithRelationshipsResponse } from "./models/RestrictionQueryWithRelationshipsResponse"; export { RetentionFilter } from "./models/RetentionFilter"; export { RetentionFilterAll } from "./models/RetentionFilterAll"; export { RetentionFilterAllAttributes } from "./models/RetentionFilterAllAttributes"; diff --git a/packages/datadog-api-client-v2/models/LogsRestrictionQueriesType.ts b/packages/datadog-api-client-v2/models/LogsRestrictionQueriesType.ts new file mode 100644 index 000000000000..a0f096c5fc50 --- /dev/null +++ b/packages/datadog-api-client-v2/models/LogsRestrictionQueriesType.ts @@ -0,0 +1,16 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ + +import { UnparsedObject } from "../../datadog-api-client-common/util"; + +/** + * Restriction query resource type. + */ + +export type LogsRestrictionQueriesType = + | typeof LOGS_RESTRICTION_QUERIES + | UnparsedObject; +export const LOGS_RESTRICTION_QUERIES = "logs_restriction_queries"; diff --git a/packages/datadog-api-client-v2/models/ObjectSerializer.ts b/packages/datadog-api-client-v2/models/ObjectSerializer.ts index 88bf78c257e0..eb1f0eefe794 100644 --- a/packages/datadog-api-client-v2/models/ObjectSerializer.ts +++ b/packages/datadog-api-client-v2/models/ObjectSerializer.ts @@ -1938,6 +1938,21 @@ import { RestrictionPolicyAttributes } from "./RestrictionPolicyAttributes"; import { RestrictionPolicyBinding } from "./RestrictionPolicyBinding"; import { RestrictionPolicyResponse } from "./RestrictionPolicyResponse"; import { RestrictionPolicyUpdateRequest } from "./RestrictionPolicyUpdateRequest"; +import { RestrictionQueryAttributes } from "./RestrictionQueryAttributes"; +import { RestrictionQueryCreateAttributes } from "./RestrictionQueryCreateAttributes"; +import { RestrictionQueryCreateData } from "./RestrictionQueryCreateData"; +import { RestrictionQueryCreatePayload } from "./RestrictionQueryCreatePayload"; +import { RestrictionQueryListResponse } from "./RestrictionQueryListResponse"; +import { RestrictionQueryRole } from "./RestrictionQueryRole"; +import { RestrictionQueryRoleAttribute } from "./RestrictionQueryRoleAttribute"; +import { RestrictionQueryRolesResponse } from "./RestrictionQueryRolesResponse"; +import { RestrictionQueryUpdateAttributes } from "./RestrictionQueryUpdateAttributes"; +import { RestrictionQueryUpdateData } from "./RestrictionQueryUpdateData"; +import { RestrictionQueryUpdatePayload } from "./RestrictionQueryUpdatePayload"; +import { RestrictionQueryWithRelationships } from "./RestrictionQueryWithRelationships"; +import { RestrictionQueryWithRelationshipsResponse } from "./RestrictionQueryWithRelationshipsResponse"; +import { RestrictionQueryWithoutRelationships } from "./RestrictionQueryWithoutRelationships"; +import { RestrictionQueryWithoutRelationshipsResponse } from "./RestrictionQueryWithoutRelationshipsResponse"; import { RetentionFilter } from "./RetentionFilter"; import { RetentionFilterAll } from "./RetentionFilterAll"; import { RetentionFilterAllAttributes } from "./RetentionFilterAllAttributes"; @@ -3366,6 +3381,7 @@ const enumsMap: { [key: string]: any[] } = { LogsMetricComputeAggregationType: ["count", "distribution"], LogsMetricResponseComputeAggregationType: ["count", "distribution"], LogsMetricType: ["logs_metrics"], + LogsRestrictionQueriesType: ["logs_restriction_queries"], LogsSort: ["timestamp", "-timestamp"], LogsSortOrder: ["asc", "desc"], LogsStorageTier: ["indexes", "online-archives", "flex"], @@ -6563,6 +6579,23 @@ const typeMap: { [index: string]: any } = { RestrictionPolicyBinding: RestrictionPolicyBinding, RestrictionPolicyResponse: RestrictionPolicyResponse, RestrictionPolicyUpdateRequest: RestrictionPolicyUpdateRequest, + RestrictionQueryAttributes: RestrictionQueryAttributes, + RestrictionQueryCreateAttributes: RestrictionQueryCreateAttributes, + RestrictionQueryCreateData: RestrictionQueryCreateData, + RestrictionQueryCreatePayload: RestrictionQueryCreatePayload, + RestrictionQueryListResponse: RestrictionQueryListResponse, + RestrictionQueryRole: RestrictionQueryRole, + RestrictionQueryRoleAttribute: RestrictionQueryRoleAttribute, + RestrictionQueryRolesResponse: RestrictionQueryRolesResponse, + RestrictionQueryUpdateAttributes: RestrictionQueryUpdateAttributes, + RestrictionQueryUpdateData: RestrictionQueryUpdateData, + RestrictionQueryUpdatePayload: RestrictionQueryUpdatePayload, + RestrictionQueryWithRelationships: RestrictionQueryWithRelationships, + RestrictionQueryWithRelationshipsResponse: + RestrictionQueryWithRelationshipsResponse, + RestrictionQueryWithoutRelationships: RestrictionQueryWithoutRelationships, + RestrictionQueryWithoutRelationshipsResponse: + RestrictionQueryWithoutRelationshipsResponse, RetentionFilter: RetentionFilter, RetentionFilterAll: RetentionFilterAll, RetentionFilterAllAttributes: RetentionFilterAllAttributes, @@ -7758,6 +7791,7 @@ const oneOfMap: { [index: string]: string[] } = { ], RUMGroupByMissing: ["string", "number"], RUMGroupByTotal: ["boolean", "string", "number"], + RestrictionQueryResponseIncludedItem: ["RestrictionQueryRole"], RoutingRuleAction: ["SendSlackMessageAction", "SendTeamsMessageAction"], ScalarColumn: ["GroupScalarColumn", "DataScalarColumn"], ScalarQuery: ["MetricsScalarQuery", "EventsScalarQuery"], diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryAttributes.ts b/packages/datadog-api-client-v2/models/RestrictionQueryAttributes.ts new file mode 100644 index 000000000000..9e973b420eb6 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryAttributes.ts @@ -0,0 +1,104 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Attributes of the restriction query. + */ +export class RestrictionQueryAttributes { + /** + * Creation time of the restriction query. + */ + "createdAt"?: Date; + /** + * Email of the user who last modified this restriction query. + */ + "lastModifierEmail"?: string; + /** + * Name of the user who last modified this restriction query. + */ + "lastModifierName"?: string; + /** + * Time of last restriction query modification. + */ + "modifiedAt"?: Date; + /** + * The query that defines the restriction. Only the content matching the query can be returned. + */ + "restrictionQuery"?: string; + /** + * Number of roles associated with this restriction query. + */ + "roleCount"?: number; + /** + * Number of users associated with this restriction query. + */ + "userCount"?: number; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + createdAt: { + baseName: "created_at", + type: "Date", + format: "date-time", + }, + lastModifierEmail: { + baseName: "last_modifier_email", + type: "string", + }, + lastModifierName: { + baseName: "last_modifier_name", + type: "string", + }, + modifiedAt: { + baseName: "modified_at", + type: "Date", + format: "date-time", + }, + restrictionQuery: { + baseName: "restriction_query", + type: "string", + }, + roleCount: { + baseName: "role_count", + type: "number", + format: "int64", + }, + userCount: { + baseName: "user_count", + type: "number", + format: "int64", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryAttributes.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryCreateAttributes.ts b/packages/datadog-api-client-v2/models/RestrictionQueryCreateAttributes.ts new file mode 100644 index 000000000000..cd09f96defc4 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryCreateAttributes.ts @@ -0,0 +1,53 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Attributes of the created restriction query. + */ +export class RestrictionQueryCreateAttributes { + /** + * The restriction query. + */ + "restrictionQuery": string; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + restrictionQuery: { + baseName: "restriction_query", + type: "string", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryCreateAttributes.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryCreateData.ts b/packages/datadog-api-client-v2/models/RestrictionQueryCreateData.ts new file mode 100644 index 000000000000..fcebc569e4cf --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryCreateData.ts @@ -0,0 +1,62 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { LogsRestrictionQueriesType } from "./LogsRestrictionQueriesType"; +import { RestrictionQueryCreateAttributes } from "./RestrictionQueryCreateAttributes"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Data related to the creation of a restriction query. + */ +export class RestrictionQueryCreateData { + /** + * Attributes of the created restriction query. + */ + "attributes"?: RestrictionQueryCreateAttributes; + /** + * Restriction query resource type. + */ + "type"?: LogsRestrictionQueriesType; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "RestrictionQueryCreateAttributes", + }, + type: { + baseName: "type", + type: "LogsRestrictionQueriesType", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryCreateData.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryCreatePayload.ts b/packages/datadog-api-client-v2/models/RestrictionQueryCreatePayload.ts new file mode 100644 index 000000000000..57fdc194ac5d --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryCreatePayload.ts @@ -0,0 +1,53 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryCreateData } from "./RestrictionQueryCreateData"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Create a restriction query. + */ +export class RestrictionQueryCreatePayload { + /** + * Data related to the creation of a restriction query. + */ + "data"?: RestrictionQueryCreateData; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "RestrictionQueryCreateData", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryCreatePayload.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryListResponse.ts b/packages/datadog-api-client-v2/models/RestrictionQueryListResponse.ts new file mode 100644 index 000000000000..43c3359a770d --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryListResponse.ts @@ -0,0 +1,53 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryWithoutRelationships } from "./RestrictionQueryWithoutRelationships"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Response containing information about multiple restriction queries. + */ +export class RestrictionQueryListResponse { + /** + * Array of returned restriction queries. + */ + "data"?: Array; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "Array", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryListResponse.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryResponseIncludedItem.ts b/packages/datadog-api-client-v2/models/RestrictionQueryResponseIncludedItem.ts new file mode 100644 index 000000000000..4241a1ad6dcf --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryResponseIncludedItem.ts @@ -0,0 +1,16 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryRole } from "./RestrictionQueryRole"; + +import { UnparsedObject } from "../../datadog-api-client-common/util"; + +/** + * An object related to a restriction query. + */ + +export type RestrictionQueryResponseIncludedItem = + | RestrictionQueryRole + | UnparsedObject; diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryRole.ts b/packages/datadog-api-client-v2/models/RestrictionQueryRole.ts new file mode 100644 index 000000000000..a2e15b3320c1 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryRole.ts @@ -0,0 +1,73 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryRoleAttribute } from "./RestrictionQueryRoleAttribute"; +import { RolesType } from "./RolesType"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Partial role object. + */ +export class RestrictionQueryRole { + /** + * Attributes of the role for a restriction query. + */ + "attributes": RestrictionQueryRoleAttribute; + /** + * ID of the role. + */ + "id": string; + /** + * Roles type. + */ + "type": RolesType; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "RestrictionQueryRoleAttribute", + required: true, + }, + id: { + baseName: "id", + type: "string", + required: true, + }, + type: { + baseName: "type", + type: "RolesType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryRole.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryRoleAttribute.ts b/packages/datadog-api-client-v2/models/RestrictionQueryRoleAttribute.ts new file mode 100644 index 000000000000..7c5e418aef54 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryRoleAttribute.ts @@ -0,0 +1,52 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Attributes of the role for a restriction query. + */ +export class RestrictionQueryRoleAttribute { + /** + * The role name. + */ + "name"?: string; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + name: { + baseName: "name", + type: "string", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryRoleAttribute.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryRolesResponse.ts b/packages/datadog-api-client-v2/models/RestrictionQueryRolesResponse.ts new file mode 100644 index 000000000000..f3b56104c247 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryRolesResponse.ts @@ -0,0 +1,53 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryRole } from "./RestrictionQueryRole"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Response containing information about roles attached to a restriction query. + */ +export class RestrictionQueryRolesResponse { + /** + * Array of roles. + */ + "data"?: Array; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "Array", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryRolesResponse.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryUpdateAttributes.ts b/packages/datadog-api-client-v2/models/RestrictionQueryUpdateAttributes.ts new file mode 100644 index 000000000000..5981c30fb3db --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryUpdateAttributes.ts @@ -0,0 +1,53 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Attributes of the edited restriction query. + */ +export class RestrictionQueryUpdateAttributes { + /** + * The restriction query. + */ + "restrictionQuery": string; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + restrictionQuery: { + baseName: "restriction_query", + type: "string", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryUpdateAttributes.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryUpdateData.ts b/packages/datadog-api-client-v2/models/RestrictionQueryUpdateData.ts new file mode 100644 index 000000000000..bed0081139d8 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryUpdateData.ts @@ -0,0 +1,62 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { LogsRestrictionQueriesType } from "./LogsRestrictionQueriesType"; +import { RestrictionQueryUpdateAttributes } from "./RestrictionQueryUpdateAttributes"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Data related to the update of a restriction query. + */ +export class RestrictionQueryUpdateData { + /** + * Attributes of the edited restriction query. + */ + "attributes"?: RestrictionQueryUpdateAttributes; + /** + * Restriction query resource type. + */ + "type"?: LogsRestrictionQueriesType; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "RestrictionQueryUpdateAttributes", + }, + type: { + baseName: "type", + type: "LogsRestrictionQueriesType", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryUpdateData.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryUpdatePayload.ts b/packages/datadog-api-client-v2/models/RestrictionQueryUpdatePayload.ts new file mode 100644 index 000000000000..be0d40aefa7d --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryUpdatePayload.ts @@ -0,0 +1,53 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryUpdateData } from "./RestrictionQueryUpdateData"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Update a restriction query. + */ +export class RestrictionQueryUpdatePayload { + /** + * Data related to the update of a restriction query. + */ + "data"?: RestrictionQueryUpdateData; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "RestrictionQueryUpdateData", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryUpdatePayload.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryWithRelationships.ts b/packages/datadog-api-client-v2/models/RestrictionQueryWithRelationships.ts new file mode 100644 index 000000000000..ca1f6f759df7 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryWithRelationships.ts @@ -0,0 +1,79 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { LogsRestrictionQueriesType } from "./LogsRestrictionQueriesType"; +import { RestrictionQueryAttributes } from "./RestrictionQueryAttributes"; +import { UserRelationships } from "./UserRelationships"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Restriction query object returned by the API. + */ +export class RestrictionQueryWithRelationships { + /** + * Attributes of the restriction query. + */ + "attributes"?: RestrictionQueryAttributes; + /** + * ID of the restriction query. + */ + "id"?: string; + /** + * Relationships of the user object. + */ + "relationships"?: UserRelationships; + /** + * Restriction query resource type. + */ + "type"?: LogsRestrictionQueriesType; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "RestrictionQueryAttributes", + }, + id: { + baseName: "id", + type: "string", + }, + relationships: { + baseName: "relationships", + type: "UserRelationships", + }, + type: { + baseName: "type", + type: "LogsRestrictionQueriesType", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryWithRelationships.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryWithRelationshipsResponse.ts b/packages/datadog-api-client-v2/models/RestrictionQueryWithRelationshipsResponse.ts new file mode 100644 index 000000000000..b34b32588668 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryWithRelationshipsResponse.ts @@ -0,0 +1,62 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryResponseIncludedItem } from "./RestrictionQueryResponseIncludedItem"; +import { RestrictionQueryWithRelationships } from "./RestrictionQueryWithRelationships"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Response containing information about a single restriction query. + */ +export class RestrictionQueryWithRelationshipsResponse { + /** + * Restriction query object returned by the API. + */ + "data"?: RestrictionQueryWithRelationships; + /** + * Array of objects related to the restriction query. + */ + "included"?: Array; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "RestrictionQueryWithRelationships", + }, + included: { + baseName: "included", + type: "Array", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryWithRelationshipsResponse.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryWithoutRelationships.ts b/packages/datadog-api-client-v2/models/RestrictionQueryWithoutRelationships.ts new file mode 100644 index 000000000000..e176f018b89d --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryWithoutRelationships.ts @@ -0,0 +1,69 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryAttributes } from "./RestrictionQueryAttributes"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Restriction query object returned by the API. + */ +export class RestrictionQueryWithoutRelationships { + /** + * Attributes of the restriction query. + */ + "attributes"?: RestrictionQueryAttributes; + /** + * ID of the restriction query. + */ + "id"?: string; + /** + * Restriction queries type. + */ + "type"?: string; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "RestrictionQueryAttributes", + }, + id: { + baseName: "id", + type: "string", + }, + type: { + baseName: "type", + type: "string", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryWithoutRelationships.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RestrictionQueryWithoutRelationshipsResponse.ts b/packages/datadog-api-client-v2/models/RestrictionQueryWithoutRelationshipsResponse.ts new file mode 100644 index 000000000000..5a47caf6a906 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RestrictionQueryWithoutRelationshipsResponse.ts @@ -0,0 +1,53 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RestrictionQueryWithoutRelationships } from "./RestrictionQueryWithoutRelationships"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * Response containing information about a single restriction query. + */ +export class RestrictionQueryWithoutRelationshipsResponse { + /** + * Restriction query object returned by the API. + */ + "data"?: RestrictionQueryWithoutRelationships; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "RestrictionQueryWithoutRelationships", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RestrictionQueryWithoutRelationshipsResponse.attributeTypeMap; + } + + public constructor() {} +}