From c9736842386648a764d54a57177f010138cf9c67 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Thu, 13 Aug 2026 15:04:31 +0000 Subject: [PATCH] Regenerate client from commit 6cac40a of spec repo --- .generator/schemas/v1/openapi.yaml | 9 - .generator/schemas/v2/openapi.yaml | 721 ++++++++++++++++++ docs/datadog_api_client.v2.api.rst | 7 + docs/datadog_api_client.v2.model.rst | 168 ++++ .../CreateTeamsOwnershipMapping.py | 35 + .../CreateTeamsOwnershipMapping_1881412984.py | 34 + .../CreateTeamsOwnershipMappingsBatch.py | 53 ++ .../DeleteTeamsOwnershipMapping.py | 13 + .../GetTeamsOwnershipMapping.py | 15 + .../ListTeamsOwnershipMappings.py | 13 + .../ListTeamsOwnershipRules.py | 13 + src/datadog_api_client/configuration.py | 6 + .../v1/api/service_level_objectives_api.py | 17 - .../v2/api/rum_teams_ownership_api.py | 349 +++++++++ src/datadog_api_client/v2/apis/__init__.py | 2 + .../teams_ownership_mapping_batch_error.py | 49 ++ ...teams_ownership_mapping_batch_operation.py | 78 ++ ..._ownership_mapping_batch_operation_data.py | 55 ++ ...mapping_batch_operation_data_attributes.py | 82 ++ ...ms_ownership_mapping_batch_operation_op.py | 38 + ...s_ownership_mapping_batch_operation_ref.py | 46 ++ .../teams_ownership_mapping_batch_request.py | 42 + .../teams_ownership_mapping_batch_response.py | 60 ++ .../teams_ownership_mapping_batch_result.py | 48 ++ ...ams_ownership_mapping_batch_result_data.py | 60 ++ .../teams_ownership_mapping_create_data.py | 54 ++ ...wnership_mapping_create_data_attributes.py | 80 ++ .../teams_ownership_mapping_create_request.py | 40 + .../model/teams_ownership_mapping_response.py | 40 + ...s_ownership_mapping_response_attributes.py | 96 +++ .../teams_ownership_mapping_response_data.py | 60 ++ .../v2/model/teams_ownership_mapping_type.py | 35 + .../teams_ownership_mappings_response.py | 56 ++ .../v2/model/teams_ownership_match_type.py | 38 + ...eams_ownership_rule_response_attributes.py | 76 ++ .../teams_ownership_rule_response_data.py | 62 ++ .../teams_ownership_rule_team_mapping.py | 39 + .../v2/model/teams_ownership_rule_type.py | 35 + .../model/teams_ownership_rules_response.py | 56 ++ src/datadog_api_client/v2/models/__init__.py | 58 ++ tests/v2/features/rum_teams_ownership.feature | 127 +++ tests/v2/features/undo.json | 45 ++ 42 files changed, 2984 insertions(+), 26 deletions(-) create mode 100644 examples/v2/rum-teams-ownership/CreateTeamsOwnershipMapping.py create mode 100644 examples/v2/rum-teams-ownership/CreateTeamsOwnershipMapping_1881412984.py create mode 100644 examples/v2/rum-teams-ownership/CreateTeamsOwnershipMappingsBatch.py create mode 100644 examples/v2/rum-teams-ownership/DeleteTeamsOwnershipMapping.py create mode 100644 examples/v2/rum-teams-ownership/GetTeamsOwnershipMapping.py create mode 100644 examples/v2/rum-teams-ownership/ListTeamsOwnershipMappings.py create mode 100644 examples/v2/rum-teams-ownership/ListTeamsOwnershipRules.py create mode 100644 src/datadog_api_client/v2/api/rum_teams_ownership_api.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_error.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_data.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_data_attributes.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_op.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_ref.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_request.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_response.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_result.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_batch_result_data.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_create_data.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_create_data_attributes.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_create_request.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_response.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_response_attributes.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_response_data.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mapping_type.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_mappings_response.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_match_type.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_rule_response_attributes.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_rule_response_data.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_rule_team_mapping.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_rule_type.py create mode 100644 src/datadog_api_client/v2/model/teams_ownership_rules_response.py create mode 100644 tests/v2/features/rum_teams_ownership.feature diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 3013d46b7c..39454b02d9 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -38007,15 +38007,6 @@ paths: schema: format: int64 type: integer - - description: |- - Whether to return only deleted service level objective objects. - example: true - in: query - name: is_deleted - required: false - schema: - default: false - type: boolean responses: "200": content: diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index a5b1012c5d..729e373ca0 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -1997,6 +1997,46 @@ components: required: true schema: type: string + TeamsOwnershipFilterApplicationIdParameter: + description: Filter mappings by RUM application ID. Each value must be a valid UUID. + in: query + name: filter[application_id] + schema: + items: + format: uuid + type: string + type: array + TeamsOwnershipFilterServiceParameter: + description: Filter mappings by RUM application service name. + in: query + name: filter[service] + schema: + items: + type: string + type: array + TeamsOwnershipFilterTeamHandleParameter: + description: Filter mappings by owning team handle. + in: query + name: filter[team_handle] + schema: + items: + type: string + type: array + TeamsOwnershipFilterViewNameParameter: + description: Filter mappings by RUM view name. + in: query + name: filter[view_name] + schema: + items: + type: string + type: array + TeamsOwnershipMappingIdParameter: + description: The ID of the teams ownership mapping. + in: path + name: id + required: true + schema: + type: string ToTimestamp: description: The ending timestamp for the SLO status query in epoch seconds. in: query @@ -112863,6 +112903,390 @@ components: example: "number_size" type: string type: object + TeamsOwnershipMappingBatchError: + description: An error encountered while validating or applying an operation. + properties: + detail: + description: A human-readable explanation specific to this error. + example: "prefix match_type is not enabled for this org" + type: string + status: + description: The HTTP status code applicable to this error. + example: "400" + type: string + title: + description: A short, human-readable summary of the error. + example: "Bad Request" + type: string + required: + - status + - title + type: object + TeamsOwnershipMappingBatchOperation: + description: A single add or remove operation, applied atomically with every other operation in the request. + properties: + data: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchOperationData" + op: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchOperationOp" + ref: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchOperationRef" + required: + - op + type: object + TeamsOwnershipMappingBatchOperationData: + description: The mapping to add. Required when `op` is `add`. + properties: + attributes: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchOperationDataAttributes" + type: + $ref: "#/components/schemas/TeamsOwnershipMappingType" + required: + - type + - attributes + type: object + TeamsOwnershipMappingBatchOperationDataAttributes: + description: |- + The attributes of the mapping to add. `team_handle` and `view_name` are required + when `op` is `add`. + properties: + application_id: + description: |- + The ID of the RUM application this mapping applies to. + For browser applications, provide the real application UUID — the team is applied to the view regardless of service. + For mobile applications, omit this field (or set it to the nil UUID `00000000-0000-0000-0000-000000000000`) — the team is applied to the view and service combination across all applications. + example: "11111111-2222-3333-4444-555555555555" + format: uuid + type: string + match_type: + $ref: "#/components/schemas/TeamsOwnershipMatchType" + service: + description: The RUM application's service name. For browser applications, this is optional. For mobile applications, this is required and scopes the ownership to a specific service. + example: "web-checkout" + type: string + team_handle: + description: The handle of the team that owns the matched RUM views. + example: "team-rum" + type: string + view_name: + description: The RUM view name to match, or its prefix when `match_type` is `prefix`. + example: "/checkout" + type: string + type: object + TeamsOwnershipMappingBatchOperationOp: + description: Whether this operation adds a new mapping or removes an existing one. + enum: + - add + - remove + example: add + type: string + x-enum-varnames: ["ADD", "REMOVE"] + TeamsOwnershipMappingBatchOperationRef: + description: Identifies an existing mapping to remove. Required when `op` is `remove`. + properties: + id: + description: The ID of the mapping to remove. + example: "456" + type: string + type: + $ref: "#/components/schemas/TeamsOwnershipMappingType" + required: + - type + - id + type: object + TeamsOwnershipMappingBatchRequest: + description: The request body for bulk-creating and bulk-removing teams ownership mappings. + properties: + atomic:operations: + description: The ordered list of add and remove operations to apply atomically. + items: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchOperation" + type: array + required: + - atomic:operations + type: object + TeamsOwnershipMappingBatchResponse: + description: |- + The response body for the bulk create and remove operation. On success, `atomic:results` + contains one entry per operation, in request order. On failure, no operations were applied + and `errors` describes what went wrong. + properties: + atomic:results: + description: |- + The result of each operation. + Add operations are processed first, then remove operations, so results may not appear + in the same order as the request. Present only on success. + items: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchResult" + type: array + errors: + description: The validation or processing errors encountered. Present only when the request could not be completed. + items: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchError" + type: array + type: object + TeamsOwnershipMappingBatchResult: + description: |- + The result of a single operation. + Add operations are processed first, then remove operations, so results may not appear + in the same order as the request. Empty for `remove` operations. + properties: + data: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchResultData" + type: object + TeamsOwnershipMappingBatchResultData: + description: The mapping created by an `add` operation. + properties: + attributes: + $ref: "#/components/schemas/TeamsOwnershipMappingResponseAttributes" + id: + description: The unique identifier of the teams ownership mapping. + example: "123" + type: string + type: + $ref: "#/components/schemas/TeamsOwnershipMappingType" + required: + - type + - id + - attributes + type: object + TeamsOwnershipMappingCreateData: + description: The JSON:API data envelope for a teams ownership mapping create request. + properties: + attributes: + $ref: "#/components/schemas/TeamsOwnershipMappingCreateDataAttributes" + type: + $ref: "#/components/schemas/TeamsOwnershipMappingType" + required: + - type + - attributes + type: object + TeamsOwnershipMappingCreateDataAttributes: + description: The attributes of the teams ownership mapping to create. + properties: + application_id: + description: |- + The ID of the RUM application this mapping applies to. + For browser applications, provide the real application UUID — the team is applied to the view regardless of service. + For mobile applications, omit this field (or set it to the nil UUID `00000000-0000-0000-0000-000000000000`) — the team is applied to the view and service combination across all applications. + example: "11111111-2222-3333-4444-555555555555" + format: uuid + type: string + match_type: + $ref: "#/components/schemas/TeamsOwnershipMatchType" + service: + description: The RUM application's service name. For browser applications, this is optional. For mobile applications, this is required and scopes the ownership to a specific service. + example: "web-checkout" + type: string + team_handle: + description: The handle of the team that owns the matched RUM views. + example: "team-rum" + type: string + view_name: + description: The RUM view name to match, or its prefix when `match_type` is `prefix`. + example: "/checkout" + type: string + required: + - team_handle + - view_name + type: object + TeamsOwnershipMappingCreateRequest: + description: The request body for creating a teams ownership mapping. + properties: + data: + $ref: "#/components/schemas/TeamsOwnershipMappingCreateData" + required: + - data + type: object + TeamsOwnershipMappingResponse: + description: The response body for a single teams ownership mapping. + properties: + data: + $ref: "#/components/schemas/TeamsOwnershipMappingResponseData" + required: + - data + type: object + TeamsOwnershipMappingResponseAttributes: + description: The attributes of a teams ownership mapping. + properties: + application_id: + description: |- + The ID of the RUM application this mapping applies to. + For browser applications, this is the real application UUID. + For mobile applications, this is the nil UUID `00000000-0000-0000-0000-000000000000` (wildcard), meaning the ownership applies across all applications. + example: "11111111-2222-3333-4444-555555555555" + type: string + created_at: + description: Timestamp when the mapping was created. + example: "2026-01-15T09:30:00.000Z" + format: date-time + type: string + created_by: + description: The UUID of the user who created the mapping. + example: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + type: string + match_type: + $ref: "#/components/schemas/TeamsOwnershipMatchType" + org_id: + description: The ID of the organization that owns this mapping. + example: 123456 + format: int64 + type: integer + service: + description: The RUM application's service name. For browser applications, may be empty. For mobile applications, this is the service that scopes the ownership. + example: "web-checkout" + type: string + team_handle: + description: The handle of the team that owns the matched RUM views. + example: "team-rum" + type: string + view_name: + description: The RUM view name to match, or its prefix when `match_type` is `prefix`. + example: "/checkout" + type: string + required: + - team_handle + - view_name + - service + - application_id + - org_id + - created_at + - created_by + - match_type + type: object + TeamsOwnershipMappingResponseData: + description: The JSON:API data envelope for a teams ownership mapping. + properties: + attributes: + $ref: "#/components/schemas/TeamsOwnershipMappingResponseAttributes" + id: + description: The unique identifier of the teams ownership mapping. + example: "123" + type: string + type: + $ref: "#/components/schemas/TeamsOwnershipMappingType" + required: + - id + - type + - attributes + type: object + TeamsOwnershipMappingType: + default: teams_ownership_mappings + description: The type of the resource. The value should always be teams_ownership_mappings. + enum: + - teams_ownership_mappings + example: teams_ownership_mappings + type: string + x-enum-varnames: ["TEAMS_OWNERSHIP_MAPPINGS"] + TeamsOwnershipMappingsResponse: + description: The response body for a list of teams ownership mappings. + properties: + data: + description: A list of teams ownership mappings. + items: + $ref: "#/components/schemas/TeamsOwnershipMappingResponseData" + type: array + meta: + $ref: "#/components/schemas/ResponseMetaAttributes" + required: + - data + type: object + TeamsOwnershipMatchType: + default: exact + description: How the `view_name` is matched against RUM view names. + enum: + - exact + - prefix + example: exact + type: string + x-enum-varnames: ["EXACT", "PREFIX"] + TeamsOwnershipRuleResponseAttributes: + description: The attributes of a teams ownership rule. + properties: + application_id: + description: |- + The ID of the RUM application this mapping applies to. + For browser applications, this is the real application UUID. + For mobile applications, this is the nil UUID `00000000-0000-0000-0000-000000000000` (wildcard), meaning the ownership applies across all applications. + example: "11111111-2222-3333-4444-555555555555" + type: string + match_type: + $ref: "#/components/schemas/TeamsOwnershipMatchType" + service: + description: The RUM application's service name. For browser applications, may be empty. For mobile applications, this is the service that scopes the ownership. + example: "web-checkout" + type: string + teams: + description: The teams that own the matched views, each paired with the ID of its underlying mapping. + items: + $ref: "#/components/schemas/TeamsOwnershipRuleTeamMapping" + type: array + view_name: + description: The RUM view name to match, or its prefix when `match_type` is `prefix`. + example: "/checkout" + type: string + required: + - teams + - view_name + - service + - application_id + - match_type + type: object + TeamsOwnershipRuleResponseData: + description: The JSON:API data envelope for a teams ownership rule. + properties: + attributes: + $ref: "#/components/schemas/TeamsOwnershipRuleResponseAttributes" + id: + description: |- + A deterministic identifier derived from the rule's grouping key. + This ID cannot be used to delete the rule directly; delete individual mappings + using the `mapping_id` under `teams` instead. + example: "3b1e2f7a9c4d6e8f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f" + type: string + type: + $ref: "#/components/schemas/TeamsOwnershipRuleType" + required: + - id + - type + - attributes + type: object + TeamsOwnershipRuleTeamMapping: + description: An individual team's ownership entry within a teams ownership rule. + properties: + mapping_id: + description: The ID of the underlying mapping, used to delete this team's ownership individually. + example: "123" + type: string + team_handle: + description: The handle of the owning team. + example: "team-rum" + type: string + required: + - team_handle + - mapping_id + type: object + TeamsOwnershipRuleType: + default: teams_ownership_grouped_mappings + description: The type of the resource. The value should always be teams_ownership_grouped_mappings. + enum: + - teams_ownership_grouped_mappings + example: teams_ownership_grouped_mappings + type: string + x-enum-varnames: ["TEAMS_OWNERSHIP_GROUPED_MAPPINGS"] + TeamsOwnershipRulesResponse: + description: The response body for a list of teams ownership rules. + properties: + data: + description: A list of teams ownership rules. + items: + $ref: "#/components/schemas/TeamsOwnershipRuleResponseData" + type: array + meta: + $ref: "#/components/schemas/ResponseMetaAttributes" + required: + - data + type: object TeamsResponse: description: Response with multiple teams properties: @@ -183423,6 +183847,299 @@ paths: tags: - Rum Metrics x-codegen-request-body-name: body + /api/v2/rum/config/teams-ownership/mappings: + get: + description: Get the list of teams ownership mappings for your organization, optionally filtered. + operationId: ListTeamsOwnershipMappings + parameters: + - $ref: "#/components/parameters/TeamsOwnershipFilterViewNameParameter" + - $ref: "#/components/parameters/TeamsOwnershipFilterTeamHandleParameter" + - $ref: "#/components/parameters/TeamsOwnershipFilterApplicationIdParameter" + - $ref: "#/components/parameters/TeamsOwnershipFilterServiceParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + application_id: "11111111-2222-3333-4444-555555555555" + created_at: "2026-01-15T09:30:00.000Z" + created_by: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + match_type: "exact" + org_id: 123456 + service: "web-checkout" + team_handle: "team-rum" + view_name: "/checkout" + id: "123" + type: teams_ownership_mappings + meta: + page: + total_count: 1 + total_filtered_count: 1 + schema: + $ref: "#/components/schemas/TeamsOwnershipMappingsResponse" + description: OK + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List teams ownership mappings + tags: + - Rum Teams Ownership + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + post: + description: |- + Create a teams ownership mapping for your organization. + Returns the teams ownership mapping object from the request body when the request is successful. + operationId: CreateTeamsOwnershipMapping + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + application_id: "11111111-2222-3333-4444-555555555555" + match_type: "exact" + service: "web-checkout" + team_handle: "team-rum" + view_name: "/checkout" + type: teams_ownership_mappings + schema: + $ref: "#/components/schemas/TeamsOwnershipMappingCreateRequest" + description: The definition of the teams ownership mapping to create. + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + application_id: "11111111-2222-3333-4444-555555555555" + created_at: "2026-01-15T09:30:00.000Z" + created_by: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + match_type: "exact" + org_id: 123456 + service: "web-checkout" + team_handle: "team-rum" + view_name: "/checkout" + id: "123" + type: teams_ownership_mappings + schema: + $ref: "#/components/schemas/TeamsOwnershipMappingResponse" + description: Created + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create a teams ownership mapping + tags: + - Rum Teams Ownership + x-codegen-request-body-name: body + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/rum/config/teams-ownership/mappings/operations: + post: + description: |- + Add and remove teams ownership mappings for your organization in a single atomic request, following + the JSON:API [atomic operations extension](https://jsonapi.org/ext/atomic/). + Operations are applied together: if any operation is invalid, none of the operations are applied. + Add operations are processed before remove operations, so results may not appear in the same + order as the request. + operationId: CreateTeamsOwnershipMappingsBatch + requestBody: + content: + application/json: + examples: + default: + value: + atomic:operations: + - data: + attributes: + application_id: "11111111-2222-3333-4444-555555555555" + match_type: "exact" + service: "web-checkout" + team_handle: "team-rum" + view_name: "/checkout" + type: teams_ownership_mappings + op: add + - op: remove + ref: + id: "456" + type: teams_ownership_mappings + schema: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchRequest" + description: The ordered list of add and remove operations to apply atomically. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + atomic:results: + - data: + attributes: + application_id: "11111111-2222-3333-4444-555555555555" + created_at: "2026-01-15T09:30:00.000Z" + created_by: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + match_type: "exact" + org_id: 123456 + service: "web-checkout" + team_handle: "team-rum" + view_name: "/checkout" + id: "123" + type: teams_ownership_mappings + - {} + schema: + $ref: "#/components/schemas/TeamsOwnershipMappingBatchResponse" + description: OK + "400": + content: + application/json: + examples: + default: + value: + errors: + - detail: "prefix match_type is not enabled for this org" + status: "400" + title: "Bad Request" + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: |- + Bad Request. One or more operations failed validation, so none of the operations were applied. + Errors are returned in the JSON:API atomic operations error format rather than the standard error response. + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Bulk create and remove teams ownership mappings + tags: + - Rum Teams Ownership + x-codegen-request-body-name: body + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/rum/config/teams-ownership/mappings/{id}: + delete: + description: Delete a specific teams ownership mapping from your organization. + operationId: DeleteTeamsOwnershipMapping + parameters: + - $ref: "#/components/parameters/TeamsOwnershipMappingIdParameter" + responses: + "204": + description: No Content + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete a teams ownership mapping + tags: + - Rum Teams Ownership + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + get: + description: Get a specific teams ownership mapping from your organization. + operationId: GetTeamsOwnershipMapping + parameters: + - $ref: "#/components/parameters/TeamsOwnershipMappingIdParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + application_id: "11111111-2222-3333-4444-555555555555" + created_at: "2026-01-15T09:30:00.000Z" + created_by: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" + match_type: "exact" + org_id: 123456 + service: "web-checkout" + team_handle: "team-rum" + view_name: "/checkout" + id: "123" + type: teams_ownership_mappings + schema: + $ref: "#/components/schemas/TeamsOwnershipMappingResponse" + description: OK + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a teams ownership mapping + tags: + - Rum Teams Ownership + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/rum/config/teams-ownership/rules: + get: + description: |- + Get the list of teams ownership rules for your organization, optionally filtered. + Rules group the underlying mappings by `view_name`, `application_id`, `service`, and `match_type`, + collapsing every team that owns the same view into a single entry. + operationId: ListTeamsOwnershipRules + parameters: + - $ref: "#/components/parameters/TeamsOwnershipFilterViewNameParameter" + - $ref: "#/components/parameters/TeamsOwnershipFilterTeamHandleParameter" + - $ref: "#/components/parameters/TeamsOwnershipFilterApplicationIdParameter" + - $ref: "#/components/parameters/TeamsOwnershipFilterServiceParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + application_id: "11111111-2222-3333-4444-555555555555" + match_type: "exact" + service: "web-checkout" + teams: + - mapping_id: "123" + team_handle: "team-rum" + view_name: "/checkout" + id: "3b1e2f7a9c4d6e8f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f" + type: teams_ownership_grouped_mappings + meta: + page: + total_count: 1 + total_filtered_count: 1 + schema: + $ref: "#/components/schemas/TeamsOwnershipRulesResponse" + description: OK + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List teams ownership rules + tags: + - Rum Teams Ownership + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/rum/events: get: description: |- @@ -213932,6 +214649,10 @@ tags: - description: |- Manage retention filters through [Manage Applications](https://app.datadoghq.com/rum/list) of RUM for your organization. name: Rum Retention Filters + - description: |- + Manage [teams ownership](https://docs.datadoghq.com/real_user_monitoring/platform/ownership/) mappings + between RUM views and the teams that own them. + name: Rum Teams Ownership - description: |- Configure your [Datadog Salesforce integration](https://docs.datadoghq.com/integrations/salesforce/) directly through the Datadog API. diff --git a/docs/datadog_api_client.v2.api.rst b/docs/datadog_api_client.v2.api.rst index c4aa3dd164..7873594934 100644 --- a/docs/datadog_api_client.v2.api.rst +++ b/docs/datadog_api_client.v2.api.rst @@ -774,6 +774,13 @@ datadog\_api\_client.v2.api.rum\_retention\_filters\_api module :members: :show-inheritance: +datadog\_api\_client.v2.api.rum\_teams\_ownership\_api module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.api.rum_teams_ownership_api + :members: + :show-inheritance: + datadog\_api\_client.v2.api.salesforce\_integration\_api module --------------------------------------------------------------- diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index c2a5e5aa47..e086af9c28 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -48297,6 +48297,174 @@ datadog\_api\_client.v2.model.teams\_hierarchy\_links\_response\_meta\_page modu :members: :show-inheritance: +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_error module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_error + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_operation module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_operation + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_operation\_data module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_operation\_data\_attributes module +-------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_operation\_op module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_op + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_operation\_ref module +------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_ref + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_request module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_response module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_result module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_result + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_batch\_result\_data module +----------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_batch_result_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_create\_data module +---------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_create_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_create\_data\_attributes module +---------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_create_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_create\_request module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_create_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_response module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_response\_attributes module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_response\_data module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mapping\_type module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mapping_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_mappings\_response module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_mappings_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_match\_type module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.teams_ownership_match_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_rule\_response\_attributes module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_rule_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_rule\_response\_data module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_rule_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_rule\_team\_mapping module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_rule_team_mapping + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_rule\_type module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_rule_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.teams\_ownership\_rules\_response module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.teams_ownership_rules_response + :members: + :show-inheritance: + datadog\_api\_client.v2.model.teams\_response module ---------------------------------------------------- diff --git a/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMapping.py b/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMapping.py new file mode 100644 index 0000000000..f41fb780f6 --- /dev/null +++ b/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMapping.py @@ -0,0 +1,35 @@ +""" +Create a teams ownership mapping returns "Created" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_teams_ownership_api import RumTeamsOwnershipApi +from datadog_api_client.v2.model.teams_ownership_mapping_create_data import TeamsOwnershipMappingCreateData +from datadog_api_client.v2.model.teams_ownership_mapping_create_data_attributes import ( + TeamsOwnershipMappingCreateDataAttributes, +) +from datadog_api_client.v2.model.teams_ownership_mapping_create_request import TeamsOwnershipMappingCreateRequest +from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType +from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType +from uuid import UUID + +body = TeamsOwnershipMappingCreateRequest( + data=TeamsOwnershipMappingCreateData( + attributes=TeamsOwnershipMappingCreateDataAttributes( + application_id=UUID("11111111-2222-3333-4444-555555555555"), + match_type=TeamsOwnershipMatchType.EXACT, + service="web-checkout", + team_handle="team-rum", + view_name="/checkout", + ), + type=TeamsOwnershipMappingType.TEAMS_OWNERSHIP_MAPPINGS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["create_teams_ownership_mapping"] = True +with ApiClient(configuration) as api_client: + api_instance = RumTeamsOwnershipApi(api_client) + response = api_instance.create_teams_ownership_mapping(body=body) + + print(response) diff --git a/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMapping_1881412984.py b/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMapping_1881412984.py new file mode 100644 index 0000000000..287860f9bc --- /dev/null +++ b/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMapping_1881412984.py @@ -0,0 +1,34 @@ +""" +Create teams ownership mapping returns "Created" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_teams_ownership_api import RumTeamsOwnershipApi +from datadog_api_client.v2.model.teams_ownership_mapping_create_data import TeamsOwnershipMappingCreateData +from datadog_api_client.v2.model.teams_ownership_mapping_create_data_attributes import ( + TeamsOwnershipMappingCreateDataAttributes, +) +from datadog_api_client.v2.model.teams_ownership_mapping_create_request import TeamsOwnershipMappingCreateRequest +from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType +from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType +from uuid import UUID + +body = TeamsOwnershipMappingCreateRequest( + data=TeamsOwnershipMappingCreateData( + type=TeamsOwnershipMappingType.TEAMS_OWNERSHIP_MAPPINGS, + attributes=TeamsOwnershipMappingCreateDataAttributes( + team_handle="team-rum", + view_name="/checkout", + service="web-checkout", + application_id=UUID("11111111-2222-3333-4444-555555555555"), + match_type=TeamsOwnershipMatchType.EXACT, + ), + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = RumTeamsOwnershipApi(api_client) + response = api_instance.create_teams_ownership_mapping(body=body) + + print(response) diff --git a/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMappingsBatch.py b/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMappingsBatch.py new file mode 100644 index 0000000000..53d59125ae --- /dev/null +++ b/examples/v2/rum-teams-ownership/CreateTeamsOwnershipMappingsBatch.py @@ -0,0 +1,53 @@ +""" +Bulk create and remove teams ownership mappings returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_teams_ownership_api import RumTeamsOwnershipApi +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation import TeamsOwnershipMappingBatchOperation +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data import ( + TeamsOwnershipMappingBatchOperationData, +) +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data_attributes import ( + TeamsOwnershipMappingBatchOperationDataAttributes, +) +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_op import TeamsOwnershipMappingBatchOperationOp +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_ref import ( + TeamsOwnershipMappingBatchOperationRef, +) +from datadog_api_client.v2.model.teams_ownership_mapping_batch_request import TeamsOwnershipMappingBatchRequest +from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType +from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType +from uuid import UUID + +body = TeamsOwnershipMappingBatchRequest( + atomic_operations=[ + TeamsOwnershipMappingBatchOperation( + op=TeamsOwnershipMappingBatchOperationOp.ADD, + data=TeamsOwnershipMappingBatchOperationData( + type=TeamsOwnershipMappingType.TEAMS_OWNERSHIP_MAPPINGS, + attributes=TeamsOwnershipMappingBatchOperationDataAttributes( + team_handle="team-rum", + view_name="/checkout", + service="web-checkout", + application_id=UUID("11111111-2222-3333-4444-555555555555"), + match_type=TeamsOwnershipMatchType.EXACT, + ), + ), + ), + TeamsOwnershipMappingBatchOperation( + op=TeamsOwnershipMappingBatchOperationOp.REMOVE, + ref=TeamsOwnershipMappingBatchOperationRef( + type=TeamsOwnershipMappingType.TEAMS_OWNERSHIP_MAPPINGS, + id="456", + ), + ), + ], +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = RumTeamsOwnershipApi(api_client) + response = api_instance.create_teams_ownership_mappings_batch(body=body) + + print(response) diff --git a/examples/v2/rum-teams-ownership/DeleteTeamsOwnershipMapping.py b/examples/v2/rum-teams-ownership/DeleteTeamsOwnershipMapping.py new file mode 100644 index 0000000000..fc3709546a --- /dev/null +++ b/examples/v2/rum-teams-ownership/DeleteTeamsOwnershipMapping.py @@ -0,0 +1,13 @@ +""" +Delete a teams ownership mapping returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_teams_ownership_api import RumTeamsOwnershipApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = RumTeamsOwnershipApi(api_client) + api_instance.delete_teams_ownership_mapping( + id="123", + ) diff --git a/examples/v2/rum-teams-ownership/GetTeamsOwnershipMapping.py b/examples/v2/rum-teams-ownership/GetTeamsOwnershipMapping.py new file mode 100644 index 0000000000..08cdc2d0f5 --- /dev/null +++ b/examples/v2/rum-teams-ownership/GetTeamsOwnershipMapping.py @@ -0,0 +1,15 @@ +""" +Get a teams ownership mapping returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_teams_ownership_api import RumTeamsOwnershipApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = RumTeamsOwnershipApi(api_client) + response = api_instance.get_teams_ownership_mapping( + id="123", + ) + + print(response) diff --git a/examples/v2/rum-teams-ownership/ListTeamsOwnershipMappings.py b/examples/v2/rum-teams-ownership/ListTeamsOwnershipMappings.py new file mode 100644 index 0000000000..9b34339e97 --- /dev/null +++ b/examples/v2/rum-teams-ownership/ListTeamsOwnershipMappings.py @@ -0,0 +1,13 @@ +""" +List teams ownership mappings returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_teams_ownership_api import RumTeamsOwnershipApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = RumTeamsOwnershipApi(api_client) + response = api_instance.list_teams_ownership_mappings() + + print(response) diff --git a/examples/v2/rum-teams-ownership/ListTeamsOwnershipRules.py b/examples/v2/rum-teams-ownership/ListTeamsOwnershipRules.py new file mode 100644 index 0000000000..1662aa8069 --- /dev/null +++ b/examples/v2/rum-teams-ownership/ListTeamsOwnershipRules.py @@ -0,0 +1,13 @@ +""" +List teams ownership rules returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.rum_teams_ownership_api import RumTeamsOwnershipApi + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = RumTeamsOwnershipApi(api_client) + response = api_instance.list_teams_ownership_rules() + + print(response) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index 9c01331488..6228298002 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -731,6 +731,12 @@ def __init__( "v2.create_rum_config": False, "v2.get_rum_config": False, "v2.update_rum_config": False, + "v2.create_teams_ownership_mapping": False, + "v2.create_teams_ownership_mappings_batch": False, + "v2.delete_teams_ownership_mapping": False, + "v2.get_teams_ownership_mapping": False, + "v2.list_teams_ownership_mappings": False, + "v2.list_teams_ownership_rules": False, "v2.create_rum_operation": False, "v2.create_rum_operation_strong_link": False, "v2.delete_rum_operation": False, diff --git a/src/datadog_api_client/v1/api/service_level_objectives_api.py b/src/datadog_api_client/v1/api/service_level_objectives_api.py index f8641ce541..6b2fb8f22d 100644 --- a/src/datadog_api_client/v1/api/service_level_objectives_api.py +++ b/src/datadog_api_client/v1/api/service_level_objectives_api.py @@ -273,11 +273,6 @@ def __init__(self, api_client=None): "attribute": "offset", "location": "query", }, - "is_deleted": { - "openapi_types": (bool,), - "attribute": "is_deleted", - "location": "query", - }, }, headers_map={ "accept": ["application/json"], @@ -529,7 +524,6 @@ def list_slos( metrics_query: Union[str, UnsetType] = unset, limit: Union[int, UnsetType] = unset, offset: Union[int, UnsetType] = unset, - is_deleted: Union[bool, UnsetType] = unset, ) -> SLOListResponse: """Get all SLOs. @@ -547,8 +541,6 @@ def list_slos( :type limit: int, optional :param offset: The specific offset to use as the beginning of the returned response. :type offset: int, optional - :param is_deleted: Whether to return only deleted service level objective objects. - :type is_deleted: bool, optional :rtype: SLOListResponse """ kwargs: Dict[str, Any] = {} @@ -570,9 +562,6 @@ def list_slos( if offset is not unset: kwargs["offset"] = offset - if is_deleted is not unset: - kwargs["is_deleted"] = is_deleted - return self._list_slos_endpoint.call_with_http_info(**kwargs) def list_slos_with_pagination( @@ -584,7 +573,6 @@ def list_slos_with_pagination( metrics_query: Union[str, UnsetType] = unset, limit: Union[int, UnsetType] = unset, offset: Union[int, UnsetType] = unset, - is_deleted: Union[bool, UnsetType] = unset, ) -> collections.abc.Iterable[ServiceLevelObjective]: """Get all SLOs. @@ -602,8 +590,6 @@ def list_slos_with_pagination( :type limit: int, optional :param offset: The specific offset to use as the beginning of the returned response. :type offset: int, optional - :param is_deleted: Whether to return only deleted service level objective objects. - :type is_deleted: bool, optional :return: A generator of paginated results. :rtype: collections.abc.Iterable[ServiceLevelObjective] @@ -627,9 +613,6 @@ def list_slos_with_pagination( if offset is not unset: kwargs["offset"] = offset - if is_deleted is not unset: - kwargs["is_deleted"] = is_deleted - local_page_size = get_attribute_from_path(kwargs, "limit", 1000) endpoint = self._list_slos_endpoint set_attribute_from_path(kwargs, "limit", local_page_size, endpoint.params_map) diff --git a/src/datadog_api_client/v2/api/rum_teams_ownership_api.py b/src/datadog_api_client/v2/api/rum_teams_ownership_api.py new file mode 100644 index 0000000000..2e008148de --- /dev/null +++ b/src/datadog_api_client/v2/api/rum_teams_ownership_api.py @@ -0,0 +1,349 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, Dict, List, Union + +from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint +from datadog_api_client.configuration import Configuration +from datadog_api_client.model_utils import ( + UnsetType, + unset, + UUID, +) +from datadog_api_client.v2.model.teams_ownership_mappings_response import TeamsOwnershipMappingsResponse +from datadog_api_client.v2.model.teams_ownership_mapping_response import TeamsOwnershipMappingResponse +from datadog_api_client.v2.model.teams_ownership_mapping_create_request import TeamsOwnershipMappingCreateRequest +from datadog_api_client.v2.model.teams_ownership_mapping_batch_response import TeamsOwnershipMappingBatchResponse +from datadog_api_client.v2.model.teams_ownership_mapping_batch_request import TeamsOwnershipMappingBatchRequest +from datadog_api_client.v2.model.teams_ownership_rules_response import TeamsOwnershipRulesResponse + + +class RumTeamsOwnershipApi: + """ + Manage `teams ownership `_ mappings + between RUM views and the teams that own them. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient(Configuration()) + self.api_client = api_client + + self._create_teams_ownership_mapping_endpoint = _Endpoint( + settings={ + "response_type": (TeamsOwnershipMappingResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/teams-ownership/mappings", + "operation_id": "create_teams_ownership_mapping", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (TeamsOwnershipMappingCreateRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._create_teams_ownership_mappings_batch_endpoint = _Endpoint( + settings={ + "response_type": (TeamsOwnershipMappingBatchResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/teams-ownership/mappings/operations", + "operation_id": "create_teams_ownership_mappings_batch", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (TeamsOwnershipMappingBatchRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._delete_teams_ownership_mapping_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/teams-ownership/mappings/{id}", + "operation_id": "delete_teams_ownership_mapping", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "id": { + "required": True, + "openapi_types": (str,), + "attribute": "id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + + self._get_teams_ownership_mapping_endpoint = _Endpoint( + settings={ + "response_type": (TeamsOwnershipMappingResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/teams-ownership/mappings/{id}", + "operation_id": "get_teams_ownership_mapping", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "id": { + "required": True, + "openapi_types": (str,), + "attribute": "id", + "location": "path", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_teams_ownership_mappings_endpoint = _Endpoint( + settings={ + "response_type": (TeamsOwnershipMappingsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/teams-ownership/mappings", + "operation_id": "list_teams_ownership_mappings", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "filter_view_name": { + "openapi_types": ([str],), + "attribute": "filter[view_name]", + "location": "query", + "collection_format": "multi", + }, + "filter_team_handle": { + "openapi_types": ([str],), + "attribute": "filter[team_handle]", + "location": "query", + "collection_format": "multi", + }, + "filter_application_id": { + "openapi_types": ([UUID],), + "attribute": "filter[application_id]", + "location": "query", + "collection_format": "multi", + }, + "filter_service": { + "openapi_types": ([str],), + "attribute": "filter[service]", + "location": "query", + "collection_format": "multi", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + self._list_teams_ownership_rules_endpoint = _Endpoint( + settings={ + "response_type": (TeamsOwnershipRulesResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/rum/config/teams-ownership/rules", + "operation_id": "list_teams_ownership_rules", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "filter_view_name": { + "openapi_types": ([str],), + "attribute": "filter[view_name]", + "location": "query", + "collection_format": "multi", + }, + "filter_team_handle": { + "openapi_types": ([str],), + "attribute": "filter[team_handle]", + "location": "query", + "collection_format": "multi", + }, + "filter_application_id": { + "openapi_types": ([UUID],), + "attribute": "filter[application_id]", + "location": "query", + "collection_format": "multi", + }, + "filter_service": { + "openapi_types": ([str],), + "attribute": "filter[service]", + "location": "query", + "collection_format": "multi", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + + def create_teams_ownership_mapping( + self, + body: TeamsOwnershipMappingCreateRequest, + ) -> TeamsOwnershipMappingResponse: + """Create a teams ownership mapping. + + Create a teams ownership mapping for your organization. + Returns the teams ownership mapping object from the request body when the request is successful. + + :param body: The definition of the teams ownership mapping to create. + :type body: TeamsOwnershipMappingCreateRequest + :rtype: TeamsOwnershipMappingResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._create_teams_ownership_mapping_endpoint.call_with_http_info(**kwargs) + + def create_teams_ownership_mappings_batch( + self, + body: TeamsOwnershipMappingBatchRequest, + ) -> TeamsOwnershipMappingBatchResponse: + """Bulk create and remove teams ownership mappings. + + Add and remove teams ownership mappings for your organization in a single atomic request, following + the JSON:API `atomic operations extension `_. + Operations are applied together: if any operation is invalid, none of the operations are applied. + Add operations are processed before remove operations, so results may not appear in the same + order as the request. + + :param body: The ordered list of add and remove operations to apply atomically. + :type body: TeamsOwnershipMappingBatchRequest + :rtype: TeamsOwnershipMappingBatchResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._create_teams_ownership_mappings_batch_endpoint.call_with_http_info(**kwargs) + + def delete_teams_ownership_mapping( + self, + id: str, + ) -> None: + """Delete a teams ownership mapping. + + Delete a specific teams ownership mapping from your organization. + + :param id: The ID of the teams ownership mapping. + :type id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["id"] = id + + return self._delete_teams_ownership_mapping_endpoint.call_with_http_info(**kwargs) + + def get_teams_ownership_mapping( + self, + id: str, + ) -> TeamsOwnershipMappingResponse: + """Get a teams ownership mapping. + + Get a specific teams ownership mapping from your organization. + + :param id: The ID of the teams ownership mapping. + :type id: str + :rtype: TeamsOwnershipMappingResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["id"] = id + + return self._get_teams_ownership_mapping_endpoint.call_with_http_info(**kwargs) + + def list_teams_ownership_mappings( + self, + *, + filter_view_name: Union[List[str], UnsetType] = unset, + filter_team_handle: Union[List[str], UnsetType] = unset, + filter_application_id: Union[List[UUID], UnsetType] = unset, + filter_service: Union[List[str], UnsetType] = unset, + ) -> TeamsOwnershipMappingsResponse: + """List teams ownership mappings. + + Get the list of teams ownership mappings for your organization, optionally filtered. + + :param filter_view_name: Filter mappings by RUM view name. + :type filter_view_name: [str], optional + :param filter_team_handle: Filter mappings by owning team handle. + :type filter_team_handle: [str], optional + :param filter_application_id: Filter mappings by RUM application ID. Each value must be a valid UUID. + :type filter_application_id: [UUID], optional + :param filter_service: Filter mappings by RUM application service name. + :type filter_service: [str], optional + :rtype: TeamsOwnershipMappingsResponse + """ + kwargs: Dict[str, Any] = {} + if filter_view_name is not unset: + kwargs["filter_view_name"] = filter_view_name + + if filter_team_handle is not unset: + kwargs["filter_team_handle"] = filter_team_handle + + if filter_application_id is not unset: + kwargs["filter_application_id"] = filter_application_id + + if filter_service is not unset: + kwargs["filter_service"] = filter_service + + return self._list_teams_ownership_mappings_endpoint.call_with_http_info(**kwargs) + + def list_teams_ownership_rules( + self, + *, + filter_view_name: Union[List[str], UnsetType] = unset, + filter_team_handle: Union[List[str], UnsetType] = unset, + filter_application_id: Union[List[UUID], UnsetType] = unset, + filter_service: Union[List[str], UnsetType] = unset, + ) -> TeamsOwnershipRulesResponse: + """List teams ownership rules. + + Get the list of teams ownership rules for your organization, optionally filtered. + Rules group the underlying mappings by ``view_name`` , ``application_id`` , ``service`` , and ``match_type`` , + collapsing every team that owns the same view into a single entry. + + :param filter_view_name: Filter mappings by RUM view name. + :type filter_view_name: [str], optional + :param filter_team_handle: Filter mappings by owning team handle. + :type filter_team_handle: [str], optional + :param filter_application_id: Filter mappings by RUM application ID. Each value must be a valid UUID. + :type filter_application_id: [UUID], optional + :param filter_service: Filter mappings by RUM application service name. + :type filter_service: [str], optional + :rtype: TeamsOwnershipRulesResponse + """ + kwargs: Dict[str, Any] = {} + if filter_view_name is not unset: + kwargs["filter_view_name"] = filter_view_name + + if filter_team_handle is not unset: + kwargs["filter_team_handle"] = filter_team_handle + + if filter_application_id is not unset: + kwargs["filter_application_id"] = filter_application_id + + if filter_service is not unset: + kwargs["filter_service"] = filter_service + + return self._list_teams_ownership_rules_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/apis/__init__.py b/src/datadog_api_client/v2/apis/__init__.py index 4b206c9efa..71402d2d7f 100644 --- a/src/datadog_api_client/v2/apis/__init__.py +++ b/src/datadog_api_client/v2/apis/__init__.py @@ -108,6 +108,7 @@ from datadog_api_client.v2.api.rum_replay_sessions_api import RumReplaySessionsApi from datadog_api_client.v2.api.rum_replay_viewership_api import RumReplayViewershipApi from datadog_api_client.v2.api.rum_retention_filters_api import RumRetentionFiltersApi +from datadog_api_client.v2.api.rum_teams_ownership_api import RumTeamsOwnershipApi from datadog_api_client.v2.api.salesforce_integration_api import SalesforceIntegrationApi from datadog_api_client.v2.api.scorecards_api import ScorecardsApi from datadog_api_client.v2.api.seats_api import SeatsApi @@ -251,6 +252,7 @@ "RumReplaySessionsApi", "RumReplayViewershipApi", "RumRetentionFiltersApi", + "RumTeamsOwnershipApi", "SalesforceIntegrationApi", "ScorecardsApi", "SeatsApi", diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_error.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_error.py new file mode 100644 index 0000000000..4d7a1dee94 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_error.py @@ -0,0 +1,49 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TeamsOwnershipMappingBatchError(ModelNormal): + @cached_property + def openapi_types(_): + return { + "detail": (str,), + "status": (str,), + "title": (str,), + } + + attribute_map = { + "detail": "detail", + "status": "status", + "title": "title", + } + + def __init__(self_, status: str, title: str, detail: Union[str, UnsetType] = unset, **kwargs): + """ + An error encountered while validating or applying an operation. + + :param detail: A human-readable explanation specific to this error. + :type detail: str, optional + + :param status: The HTTP status code applicable to this error. + :type status: str + + :param title: A short, human-readable summary of the error. + :type title: str + """ + if detail is not unset: + kwargs["detail"] = detail + super().__init__(kwargs) + + self_.status = status + self_.title = title diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation.py new file mode 100644 index 0000000000..f6a2609b41 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation.py @@ -0,0 +1,78 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data import ( + TeamsOwnershipMappingBatchOperationData, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_op import ( + TeamsOwnershipMappingBatchOperationOp, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_ref import ( + TeamsOwnershipMappingBatchOperationRef, + ) + + +class TeamsOwnershipMappingBatchOperation(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data import ( + TeamsOwnershipMappingBatchOperationData, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_op import ( + TeamsOwnershipMappingBatchOperationOp, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_ref import ( + TeamsOwnershipMappingBatchOperationRef, + ) + + return { + "data": (TeamsOwnershipMappingBatchOperationData,), + "op": (TeamsOwnershipMappingBatchOperationOp,), + "ref": (TeamsOwnershipMappingBatchOperationRef,), + } + + attribute_map = { + "data": "data", + "op": "op", + "ref": "ref", + } + + def __init__( + self_, + op: TeamsOwnershipMappingBatchOperationOp, + data: Union[TeamsOwnershipMappingBatchOperationData, UnsetType] = unset, + ref: Union[TeamsOwnershipMappingBatchOperationRef, UnsetType] = unset, + **kwargs, + ): + """ + A single add or remove operation, applied atomically with every other operation in the request. + + :param data: The mapping to add. Required when ``op`` is ``add``. + :type data: TeamsOwnershipMappingBatchOperationData, optional + + :param op: Whether this operation adds a new mapping or removes an existing one. + :type op: TeamsOwnershipMappingBatchOperationOp + + :param ref: Identifies an existing mapping to remove. Required when ``op`` is ``remove``. + :type ref: TeamsOwnershipMappingBatchOperationRef, optional + """ + if data is not unset: + kwargs["data"] = data + if ref is not unset: + kwargs["ref"] = ref + super().__init__(kwargs) + + self_.op = op diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_data.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_data.py new file mode 100644 index 0000000000..3340c2bb9d --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_data.py @@ -0,0 +1,55 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data_attributes import ( + TeamsOwnershipMappingBatchOperationDataAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + +class TeamsOwnershipMappingBatchOperationData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data_attributes import ( + TeamsOwnershipMappingBatchOperationDataAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + return { + "attributes": (TeamsOwnershipMappingBatchOperationDataAttributes,), + "type": (TeamsOwnershipMappingType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: TeamsOwnershipMappingBatchOperationDataAttributes, type: TeamsOwnershipMappingType, **kwargs + ): + """ + The mapping to add. Required when ``op`` is ``add``. + + :param attributes: The attributes of the mapping to add. ``team_handle`` and ``view_name`` are required + when ``op`` is ``add``. + :type attributes: TeamsOwnershipMappingBatchOperationDataAttributes + + :param type: The type of the resource. The value should always be teams_ownership_mappings. + :type type: TeamsOwnershipMappingType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_data_attributes.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_data_attributes.py new file mode 100644 index 0000000000..150b615ee0 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_data_attributes.py @@ -0,0 +1,82 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType + + +class TeamsOwnershipMappingBatchOperationDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType + + return { + "application_id": (UUID,), + "match_type": (TeamsOwnershipMatchType,), + "service": (str,), + "team_handle": (str,), + "view_name": (str,), + } + + attribute_map = { + "application_id": "application_id", + "match_type": "match_type", + "service": "service", + "team_handle": "team_handle", + "view_name": "view_name", + } + + def __init__( + self_, + application_id: Union[UUID, UnsetType] = unset, + match_type: Union[TeamsOwnershipMatchType, UnsetType] = unset, + service: Union[str, UnsetType] = unset, + team_handle: Union[str, UnsetType] = unset, + view_name: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of the mapping to add. ``team_handle`` and ``view_name`` are required + when ``op`` is ``add``. + + :param application_id: The ID of the RUM application this mapping applies to. + For browser applications, provide the real application UUID — the team is applied to the view regardless of service. + For mobile applications, omit this field (or set it to the nil UUID ``00000000-0000-0000-0000-000000000000`` ) — the team is applied to the view and service combination across all applications. + :type application_id: UUID, optional + + :param match_type: How the ``view_name`` is matched against RUM view names. + :type match_type: TeamsOwnershipMatchType, optional + + :param service: The RUM application's service name. For browser applications, this is optional. For mobile applications, this is required and scopes the ownership to a specific service. + :type service: str, optional + + :param team_handle: The handle of the team that owns the matched RUM views. + :type team_handle: str, optional + + :param view_name: The RUM view name to match, or its prefix when ``match_type`` is ``prefix``. + :type view_name: str, optional + """ + if application_id is not unset: + kwargs["application_id"] = application_id + if match_type is not unset: + kwargs["match_type"] = match_type + if service is not unset: + kwargs["service"] = service + if team_handle is not unset: + kwargs["team_handle"] = team_handle + if view_name is not unset: + kwargs["view_name"] = view_name + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_op.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_op.py new file mode 100644 index 0000000000..b1aeaab081 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_op.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TeamsOwnershipMappingBatchOperationOp(ModelSimple): + """ + Whether this operation adds a new mapping or removes an existing one. + + :param value: Must be one of ["add", "remove"]. + :type value: str + """ + + allowed_values = { + "add", + "remove", + } + ADD: ClassVar["TeamsOwnershipMappingBatchOperationOp"] + REMOVE: ClassVar["TeamsOwnershipMappingBatchOperationOp"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TeamsOwnershipMappingBatchOperationOp.ADD = TeamsOwnershipMappingBatchOperationOp("add") +TeamsOwnershipMappingBatchOperationOp.REMOVE = TeamsOwnershipMappingBatchOperationOp("remove") diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_ref.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_ref.py new file mode 100644 index 0000000000..c3fa68440f --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_operation_ref.py @@ -0,0 +1,46 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + +class TeamsOwnershipMappingBatchOperationRef(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + return { + "id": (str,), + "type": (TeamsOwnershipMappingType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: TeamsOwnershipMappingType, **kwargs): + """ + Identifies an existing mapping to remove. Required when ``op`` is ``remove``. + + :param id: The ID of the mapping to remove. + :type id: str + + :param type: The type of the resource. The value should always be teams_ownership_mappings. + :type type: TeamsOwnershipMappingType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_request.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_request.py new file mode 100644 index 0000000000..3d75d58bdf --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_request.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation import TeamsOwnershipMappingBatchOperation + + +class TeamsOwnershipMappingBatchRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation import ( + TeamsOwnershipMappingBatchOperation, + ) + + return { + "atomic_operations": ([TeamsOwnershipMappingBatchOperation],), + } + + attribute_map = { + "atomic_operations": "atomic:operations", + } + + def __init__(self_, atomic_operations: List[TeamsOwnershipMappingBatchOperation], **kwargs): + """ + The request body for bulk-creating and bulk-removing teams ownership mappings. + + :param atomic_operations: The ordered list of add and remove operations to apply atomically. + :type atomic_operations: [TeamsOwnershipMappingBatchOperation] + """ + super().__init__(kwargs) + + self_.atomic_operations = atomic_operations diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_response.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_response.py new file mode 100644 index 0000000000..eff2e62f54 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_response.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_batch_result import TeamsOwnershipMappingBatchResult + from datadog_api_client.v2.model.teams_ownership_mapping_batch_error import TeamsOwnershipMappingBatchError + + +class TeamsOwnershipMappingBatchResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_batch_result import TeamsOwnershipMappingBatchResult + from datadog_api_client.v2.model.teams_ownership_mapping_batch_error import TeamsOwnershipMappingBatchError + + return { + "atomic_results": ([TeamsOwnershipMappingBatchResult],), + "errors": ([TeamsOwnershipMappingBatchError],), + } + + attribute_map = { + "atomic_results": "atomic:results", + "errors": "errors", + } + + def __init__( + self_, + atomic_results: Union[List[TeamsOwnershipMappingBatchResult], UnsetType] = unset, + errors: Union[List[TeamsOwnershipMappingBatchError], UnsetType] = unset, + **kwargs, + ): + """ + The response body for the bulk create and remove operation. On success, ``atomic:results`` + contains one entry per operation, in request order. On failure, no operations were applied + and ``errors`` describes what went wrong. + + :param atomic_results: The result of each operation. + Add operations are processed first, then remove operations, so results may not appear + in the same order as the request. Present only on success. + :type atomic_results: [TeamsOwnershipMappingBatchResult], optional + + :param errors: The validation or processing errors encountered. Present only when the request could not be completed. + :type errors: [TeamsOwnershipMappingBatchError], optional + """ + if atomic_results is not unset: + kwargs["atomic_results"] = atomic_results + if errors is not unset: + kwargs["errors"] = errors + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_result.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_result.py new file mode 100644 index 0000000000..305980c73c --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_result.py @@ -0,0 +1,48 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_batch_result_data import ( + TeamsOwnershipMappingBatchResultData, + ) + + +class TeamsOwnershipMappingBatchResult(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_batch_result_data import ( + TeamsOwnershipMappingBatchResultData, + ) + + return { + "data": (TeamsOwnershipMappingBatchResultData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: Union[TeamsOwnershipMappingBatchResultData, UnsetType] = unset, **kwargs): + """ + The result of a single operation. + Add operations are processed first, then remove operations, so results may not appear + in the same order as the request. Empty for ``remove`` operations. + + :param data: The mapping created by an ``add`` operation. + :type data: TeamsOwnershipMappingBatchResultData, optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_result_data.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_result_data.py new file mode 100644 index 0000000000..b1be632dcb --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_batch_result_data.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_response_attributes import ( + TeamsOwnershipMappingResponseAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + +class TeamsOwnershipMappingBatchResultData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_response_attributes import ( + TeamsOwnershipMappingResponseAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + return { + "attributes": (TeamsOwnershipMappingResponseAttributes,), + "id": (str,), + "type": (TeamsOwnershipMappingType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: TeamsOwnershipMappingResponseAttributes, id: str, type: TeamsOwnershipMappingType, **kwargs + ): + """ + The mapping created by an ``add`` operation. + + :param attributes: The attributes of a teams ownership mapping. + :type attributes: TeamsOwnershipMappingResponseAttributes + + :param id: The unique identifier of the teams ownership mapping. + :type id: str + + :param type: The type of the resource. The value should always be teams_ownership_mappings. + :type type: TeamsOwnershipMappingType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_create_data.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_create_data.py new file mode 100644 index 0000000000..d69ca07ee2 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_create_data.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_create_data_attributes import ( + TeamsOwnershipMappingCreateDataAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + +class TeamsOwnershipMappingCreateData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_create_data_attributes import ( + TeamsOwnershipMappingCreateDataAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + return { + "attributes": (TeamsOwnershipMappingCreateDataAttributes,), + "type": (TeamsOwnershipMappingType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, attributes: TeamsOwnershipMappingCreateDataAttributes, type: TeamsOwnershipMappingType, **kwargs + ): + """ + The JSON:API data envelope for a teams ownership mapping create request. + + :param attributes: The attributes of the teams ownership mapping to create. + :type attributes: TeamsOwnershipMappingCreateDataAttributes + + :param type: The type of the resource. The value should always be teams_ownership_mappings. + :type type: TeamsOwnershipMappingType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_create_data_attributes.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_create_data_attributes.py new file mode 100644 index 0000000000..928c383307 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_create_data_attributes.py @@ -0,0 +1,80 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType + + +class TeamsOwnershipMappingCreateDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType + + return { + "application_id": (UUID,), + "match_type": (TeamsOwnershipMatchType,), + "service": (str,), + "team_handle": (str,), + "view_name": (str,), + } + + attribute_map = { + "application_id": "application_id", + "match_type": "match_type", + "service": "service", + "team_handle": "team_handle", + "view_name": "view_name", + } + + def __init__( + self_, + team_handle: str, + view_name: str, + application_id: Union[UUID, UnsetType] = unset, + match_type: Union[TeamsOwnershipMatchType, UnsetType] = unset, + service: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + The attributes of the teams ownership mapping to create. + + :param application_id: The ID of the RUM application this mapping applies to. + For browser applications, provide the real application UUID — the team is applied to the view regardless of service. + For mobile applications, omit this field (or set it to the nil UUID ``00000000-0000-0000-0000-000000000000`` ) — the team is applied to the view and service combination across all applications. + :type application_id: UUID, optional + + :param match_type: How the ``view_name`` is matched against RUM view names. + :type match_type: TeamsOwnershipMatchType, optional + + :param service: The RUM application's service name. For browser applications, this is optional. For mobile applications, this is required and scopes the ownership to a specific service. + :type service: str, optional + + :param team_handle: The handle of the team that owns the matched RUM views. + :type team_handle: str + + :param view_name: The RUM view name to match, or its prefix when ``match_type`` is ``prefix``. + :type view_name: str + """ + if application_id is not unset: + kwargs["application_id"] = application_id + if match_type is not unset: + kwargs["match_type"] = match_type + if service is not unset: + kwargs["service"] = service + super().__init__(kwargs) + + self_.team_handle = team_handle + self_.view_name = view_name diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_create_request.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_create_request.py new file mode 100644 index 0000000000..82223dfbfa --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_create_request.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_create_data import TeamsOwnershipMappingCreateData + + +class TeamsOwnershipMappingCreateRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_create_data import TeamsOwnershipMappingCreateData + + return { + "data": (TeamsOwnershipMappingCreateData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TeamsOwnershipMappingCreateData, **kwargs): + """ + The request body for creating a teams ownership mapping. + + :param data: The JSON:API data envelope for a teams ownership mapping create request. + :type data: TeamsOwnershipMappingCreateData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_response.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_response.py new file mode 100644 index 0000000000..d823f72cf0 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_response.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_response_data import TeamsOwnershipMappingResponseData + + +class TeamsOwnershipMappingResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_response_data import TeamsOwnershipMappingResponseData + + return { + "data": (TeamsOwnershipMappingResponseData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TeamsOwnershipMappingResponseData, **kwargs): + """ + The response body for a single teams ownership mapping. + + :param data: The JSON:API data envelope for a teams ownership mapping. + :type data: TeamsOwnershipMappingResponseData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_response_attributes.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_response_attributes.py new file mode 100644 index 0000000000..3a598c375b --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_response_attributes.py @@ -0,0 +1,96 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType + + +class TeamsOwnershipMappingResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType + + return { + "application_id": (str,), + "created_at": (datetime,), + "created_by": (str,), + "match_type": (TeamsOwnershipMatchType,), + "org_id": (int,), + "service": (str,), + "team_handle": (str,), + "view_name": (str,), + } + + attribute_map = { + "application_id": "application_id", + "created_at": "created_at", + "created_by": "created_by", + "match_type": "match_type", + "org_id": "org_id", + "service": "service", + "team_handle": "team_handle", + "view_name": "view_name", + } + + def __init__( + self_, + application_id: str, + created_at: datetime, + created_by: str, + match_type: TeamsOwnershipMatchType, + org_id: int, + service: str, + team_handle: str, + view_name: str, + **kwargs, + ): + """ + The attributes of a teams ownership mapping. + + :param application_id: The ID of the RUM application this mapping applies to. + For browser applications, this is the real application UUID. + For mobile applications, this is the nil UUID ``00000000-0000-0000-0000-000000000000`` (wildcard), meaning the ownership applies across all applications. + :type application_id: str + + :param created_at: Timestamp when the mapping was created. + :type created_at: datetime + + :param created_by: The UUID of the user who created the mapping. + :type created_by: str + + :param match_type: How the ``view_name`` is matched against RUM view names. + :type match_type: TeamsOwnershipMatchType + + :param org_id: The ID of the organization that owns this mapping. + :type org_id: int + + :param service: The RUM application's service name. For browser applications, may be empty. For mobile applications, this is the service that scopes the ownership. + :type service: str + + :param team_handle: The handle of the team that owns the matched RUM views. + :type team_handle: str + + :param view_name: The RUM view name to match, or its prefix when ``match_type`` is ``prefix``. + :type view_name: str + """ + super().__init__(kwargs) + + self_.application_id = application_id + self_.created_at = created_at + self_.created_by = created_by + self_.match_type = match_type + self_.org_id = org_id + self_.service = service + self_.team_handle = team_handle + self_.view_name = view_name diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_response_data.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_response_data.py new file mode 100644 index 0000000000..89d6c62331 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_response_data.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_response_attributes import ( + TeamsOwnershipMappingResponseAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + +class TeamsOwnershipMappingResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_response_attributes import ( + TeamsOwnershipMappingResponseAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType + + return { + "attributes": (TeamsOwnershipMappingResponseAttributes,), + "id": (str,), + "type": (TeamsOwnershipMappingType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: TeamsOwnershipMappingResponseAttributes, id: str, type: TeamsOwnershipMappingType, **kwargs + ): + """ + The JSON:API data envelope for a teams ownership mapping. + + :param attributes: The attributes of a teams ownership mapping. + :type attributes: TeamsOwnershipMappingResponseAttributes + + :param id: The unique identifier of the teams ownership mapping. + :type id: str + + :param type: The type of the resource. The value should always be teams_ownership_mappings. + :type type: TeamsOwnershipMappingType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/teams_ownership_mapping_type.py b/src/datadog_api_client/v2/model/teams_ownership_mapping_type.py new file mode 100644 index 0000000000..f4550a702e --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mapping_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TeamsOwnershipMappingType(ModelSimple): + """ + The type of the resource. The value should always be teams_ownership_mappings. + + :param value: If omitted defaults to "teams_ownership_mappings". Must be one of ["teams_ownership_mappings"]. + :type value: str + """ + + allowed_values = { + "teams_ownership_mappings", + } + TEAMS_OWNERSHIP_MAPPINGS: ClassVar["TeamsOwnershipMappingType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TeamsOwnershipMappingType.TEAMS_OWNERSHIP_MAPPINGS = TeamsOwnershipMappingType("teams_ownership_mappings") diff --git a/src/datadog_api_client/v2/model/teams_ownership_mappings_response.py b/src/datadog_api_client/v2/model/teams_ownership_mappings_response.py new file mode 100644 index 0000000000..f5d6d708f0 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_mappings_response.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_mapping_response_data import TeamsOwnershipMappingResponseData + from datadog_api_client.v2.model.response_meta_attributes import ResponseMetaAttributes + + +class TeamsOwnershipMappingsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_mapping_response_data import TeamsOwnershipMappingResponseData + from datadog_api_client.v2.model.response_meta_attributes import ResponseMetaAttributes + + return { + "data": ([TeamsOwnershipMappingResponseData],), + "meta": (ResponseMetaAttributes,), + } + + attribute_map = { + "data": "data", + "meta": "meta", + } + + def __init__( + self_, + data: List[TeamsOwnershipMappingResponseData], + meta: Union[ResponseMetaAttributes, UnsetType] = unset, + **kwargs, + ): + """ + The response body for a list of teams ownership mappings. + + :param data: A list of teams ownership mappings. + :type data: [TeamsOwnershipMappingResponseData] + + :param meta: Object describing meta attributes of response. + :type meta: ResponseMetaAttributes, optional + """ + if meta is not unset: + kwargs["meta"] = meta + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/teams_ownership_match_type.py b/src/datadog_api_client/v2/model/teams_ownership_match_type.py new file mode 100644 index 0000000000..7f9932c8b7 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_match_type.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TeamsOwnershipMatchType(ModelSimple): + """ + How the `view_name` is matched against RUM view names. + + :param value: If omitted defaults to "exact". Must be one of ["exact", "prefix"]. + :type value: str + """ + + allowed_values = { + "exact", + "prefix", + } + EXACT: ClassVar["TeamsOwnershipMatchType"] + PREFIX: ClassVar["TeamsOwnershipMatchType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TeamsOwnershipMatchType.EXACT = TeamsOwnershipMatchType("exact") +TeamsOwnershipMatchType.PREFIX = TeamsOwnershipMatchType("prefix") diff --git a/src/datadog_api_client/v2/model/teams_ownership_rule_response_attributes.py b/src/datadog_api_client/v2/model/teams_ownership_rule_response_attributes.py new file mode 100644 index 0000000000..429d936161 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_rule_response_attributes.py @@ -0,0 +1,76 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType + from datadog_api_client.v2.model.teams_ownership_rule_team_mapping import TeamsOwnershipRuleTeamMapping + + +class TeamsOwnershipRuleResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType + from datadog_api_client.v2.model.teams_ownership_rule_team_mapping import TeamsOwnershipRuleTeamMapping + + return { + "application_id": (str,), + "match_type": (TeamsOwnershipMatchType,), + "service": (str,), + "teams": ([TeamsOwnershipRuleTeamMapping],), + "view_name": (str,), + } + + attribute_map = { + "application_id": "application_id", + "match_type": "match_type", + "service": "service", + "teams": "teams", + "view_name": "view_name", + } + + def __init__( + self_, + application_id: str, + match_type: TeamsOwnershipMatchType, + service: str, + teams: List[TeamsOwnershipRuleTeamMapping], + view_name: str, + **kwargs, + ): + """ + The attributes of a teams ownership rule. + + :param application_id: The ID of the RUM application this mapping applies to. + For browser applications, this is the real application UUID. + For mobile applications, this is the nil UUID ``00000000-0000-0000-0000-000000000000`` (wildcard), meaning the ownership applies across all applications. + :type application_id: str + + :param match_type: How the ``view_name`` is matched against RUM view names. + :type match_type: TeamsOwnershipMatchType + + :param service: The RUM application's service name. For browser applications, may be empty. For mobile applications, this is the service that scopes the ownership. + :type service: str + + :param teams: The teams that own the matched views, each paired with the ID of its underlying mapping. + :type teams: [TeamsOwnershipRuleTeamMapping] + + :param view_name: The RUM view name to match, or its prefix when ``match_type`` is ``prefix``. + :type view_name: str + """ + super().__init__(kwargs) + + self_.application_id = application_id + self_.match_type = match_type + self_.service = service + self_.teams = teams + self_.view_name = view_name diff --git a/src/datadog_api_client/v2/model/teams_ownership_rule_response_data.py b/src/datadog_api_client/v2/model/teams_ownership_rule_response_data.py new file mode 100644 index 0000000000..f72feee7f5 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_rule_response_data.py @@ -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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_rule_response_attributes import ( + TeamsOwnershipRuleResponseAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_rule_type import TeamsOwnershipRuleType + + +class TeamsOwnershipRuleResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_rule_response_attributes import ( + TeamsOwnershipRuleResponseAttributes, + ) + from datadog_api_client.v2.model.teams_ownership_rule_type import TeamsOwnershipRuleType + + return { + "attributes": (TeamsOwnershipRuleResponseAttributes,), + "id": (str,), + "type": (TeamsOwnershipRuleType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, attributes: TeamsOwnershipRuleResponseAttributes, id: str, type: TeamsOwnershipRuleType, **kwargs + ): + """ + The JSON:API data envelope for a teams ownership rule. + + :param attributes: The attributes of a teams ownership rule. + :type attributes: TeamsOwnershipRuleResponseAttributes + + :param id: A deterministic identifier derived from the rule's grouping key. + This ID cannot be used to delete the rule directly; delete individual mappings + using the ``mapping_id`` under ``teams`` instead. + :type id: str + + :param type: The type of the resource. The value should always be teams_ownership_grouped_mappings. + :type type: TeamsOwnershipRuleType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/teams_ownership_rule_team_mapping.py b/src/datadog_api_client/v2/model/teams_ownership_rule_team_mapping.py new file mode 100644 index 0000000000..9c94e63321 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_rule_team_mapping.py @@ -0,0 +1,39 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +class TeamsOwnershipRuleTeamMapping(ModelNormal): + @cached_property + def openapi_types(_): + return { + "mapping_id": (str,), + "team_handle": (str,), + } + + attribute_map = { + "mapping_id": "mapping_id", + "team_handle": "team_handle", + } + + def __init__(self_, mapping_id: str, team_handle: str, **kwargs): + """ + An individual team's ownership entry within a teams ownership rule. + + :param mapping_id: The ID of the underlying mapping, used to delete this team's ownership individually. + :type mapping_id: str + + :param team_handle: The handle of the owning team. + :type team_handle: str + """ + super().__init__(kwargs) + + self_.mapping_id = mapping_id + self_.team_handle = team_handle diff --git a/src/datadog_api_client/v2/model/teams_ownership_rule_type.py b/src/datadog_api_client/v2/model/teams_ownership_rule_type.py new file mode 100644 index 0000000000..bd0e5de9c6 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_rule_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TeamsOwnershipRuleType(ModelSimple): + """ + The type of the resource. The value should always be teams_ownership_grouped_mappings. + + :param value: If omitted defaults to "teams_ownership_grouped_mappings". Must be one of ["teams_ownership_grouped_mappings"]. + :type value: str + """ + + allowed_values = { + "teams_ownership_grouped_mappings", + } + TEAMS_OWNERSHIP_GROUPED_MAPPINGS: ClassVar["TeamsOwnershipRuleType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TeamsOwnershipRuleType.TEAMS_OWNERSHIP_GROUPED_MAPPINGS = TeamsOwnershipRuleType("teams_ownership_grouped_mappings") diff --git a/src/datadog_api_client/v2/model/teams_ownership_rules_response.py b/src/datadog_api_client/v2/model/teams_ownership_rules_response.py new file mode 100644 index 0000000000..588ef07b89 --- /dev/null +++ b/src/datadog_api_client/v2/model/teams_ownership_rules_response.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.teams_ownership_rule_response_data import TeamsOwnershipRuleResponseData + from datadog_api_client.v2.model.response_meta_attributes import ResponseMetaAttributes + + +class TeamsOwnershipRulesResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.teams_ownership_rule_response_data import TeamsOwnershipRuleResponseData + from datadog_api_client.v2.model.response_meta_attributes import ResponseMetaAttributes + + return { + "data": ([TeamsOwnershipRuleResponseData],), + "meta": (ResponseMetaAttributes,), + } + + attribute_map = { + "data": "data", + "meta": "meta", + } + + def __init__( + self_, + data: List[TeamsOwnershipRuleResponseData], + meta: Union[ResponseMetaAttributes, UnsetType] = unset, + **kwargs, + ): + """ + The response body for a list of teams ownership rules. + + :param data: A list of teams ownership rules. + :type data: [TeamsOwnershipRuleResponseData] + + :param meta: Object describing meta attributes of response. + :type meta: ResponseMetaAttributes, optional + """ + if meta is not unset: + kwargs["meta"] = meta + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 7200f76674..5a29b9767d 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -9911,6 +9911,40 @@ from datadog_api_client.v2.model.teams_hierarchy_links_response_links import TeamsHierarchyLinksResponseLinks from datadog_api_client.v2.model.teams_hierarchy_links_response_meta import TeamsHierarchyLinksResponseMeta from datadog_api_client.v2.model.teams_hierarchy_links_response_meta_page import TeamsHierarchyLinksResponseMetaPage +from datadog_api_client.v2.model.teams_ownership_mapping_batch_error import TeamsOwnershipMappingBatchError +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation import TeamsOwnershipMappingBatchOperation +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data import ( + TeamsOwnershipMappingBatchOperationData, +) +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_data_attributes import ( + TeamsOwnershipMappingBatchOperationDataAttributes, +) +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_op import TeamsOwnershipMappingBatchOperationOp +from datadog_api_client.v2.model.teams_ownership_mapping_batch_operation_ref import ( + TeamsOwnershipMappingBatchOperationRef, +) +from datadog_api_client.v2.model.teams_ownership_mapping_batch_request import TeamsOwnershipMappingBatchRequest +from datadog_api_client.v2.model.teams_ownership_mapping_batch_response import TeamsOwnershipMappingBatchResponse +from datadog_api_client.v2.model.teams_ownership_mapping_batch_result import TeamsOwnershipMappingBatchResult +from datadog_api_client.v2.model.teams_ownership_mapping_batch_result_data import TeamsOwnershipMappingBatchResultData +from datadog_api_client.v2.model.teams_ownership_mapping_create_data import TeamsOwnershipMappingCreateData +from datadog_api_client.v2.model.teams_ownership_mapping_create_data_attributes import ( + TeamsOwnershipMappingCreateDataAttributes, +) +from datadog_api_client.v2.model.teams_ownership_mapping_create_request import TeamsOwnershipMappingCreateRequest +from datadog_api_client.v2.model.teams_ownership_mapping_response import TeamsOwnershipMappingResponse +from datadog_api_client.v2.model.teams_ownership_mapping_response_attributes import ( + TeamsOwnershipMappingResponseAttributes, +) +from datadog_api_client.v2.model.teams_ownership_mapping_response_data import TeamsOwnershipMappingResponseData +from datadog_api_client.v2.model.teams_ownership_mapping_type import TeamsOwnershipMappingType +from datadog_api_client.v2.model.teams_ownership_mappings_response import TeamsOwnershipMappingsResponse +from datadog_api_client.v2.model.teams_ownership_match_type import TeamsOwnershipMatchType +from datadog_api_client.v2.model.teams_ownership_rule_response_attributes import TeamsOwnershipRuleResponseAttributes +from datadog_api_client.v2.model.teams_ownership_rule_response_data import TeamsOwnershipRuleResponseData +from datadog_api_client.v2.model.teams_ownership_rule_team_mapping import TeamsOwnershipRuleTeamMapping +from datadog_api_client.v2.model.teams_ownership_rule_type import TeamsOwnershipRuleType +from datadog_api_client.v2.model.teams_ownership_rules_response import TeamsOwnershipRulesResponse from datadog_api_client.v2.model.teams_response import TeamsResponse from datadog_api_client.v2.model.teams_response_links import TeamsResponseLinks from datadog_api_client.v2.model.teams_response_meta import TeamsResponseMeta @@ -17503,6 +17537,30 @@ "TeamsHierarchyLinksResponseLinks", "TeamsHierarchyLinksResponseMeta", "TeamsHierarchyLinksResponseMetaPage", + "TeamsOwnershipMappingBatchError", + "TeamsOwnershipMappingBatchOperation", + "TeamsOwnershipMappingBatchOperationData", + "TeamsOwnershipMappingBatchOperationDataAttributes", + "TeamsOwnershipMappingBatchOperationOp", + "TeamsOwnershipMappingBatchOperationRef", + "TeamsOwnershipMappingBatchRequest", + "TeamsOwnershipMappingBatchResponse", + "TeamsOwnershipMappingBatchResult", + "TeamsOwnershipMappingBatchResultData", + "TeamsOwnershipMappingCreateData", + "TeamsOwnershipMappingCreateDataAttributes", + "TeamsOwnershipMappingCreateRequest", + "TeamsOwnershipMappingResponse", + "TeamsOwnershipMappingResponseAttributes", + "TeamsOwnershipMappingResponseData", + "TeamsOwnershipMappingType", + "TeamsOwnershipMappingsResponse", + "TeamsOwnershipMatchType", + "TeamsOwnershipRuleResponseAttributes", + "TeamsOwnershipRuleResponseData", + "TeamsOwnershipRuleTeamMapping", + "TeamsOwnershipRuleType", + "TeamsOwnershipRulesResponse", "TeamsResponse", "TeamsResponseLinks", "TeamsResponseMeta", diff --git a/tests/v2/features/rum_teams_ownership.feature b/tests/v2/features/rum_teams_ownership.feature new file mode 100644 index 0000000000..5455d1af85 --- /dev/null +++ b/tests/v2/features/rum_teams_ownership.feature @@ -0,0 +1,127 @@ +@endpoint(rum-teams-ownership) @endpoint(rum-teams-ownership-v2) +Feature: Rum Teams Ownership + Manage [teams ownership](https://docs.datadoghq.com/real_user_monitoring/p + latform/ownership/) mappings between RUM views and the teams that own + them. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "RumTeamsOwnership" API + + @team:DataDog/rum-backend + Scenario: Bulk create and remove teams ownership mappings returns "Bad Request" response + Given new "CreateTeamsOwnershipMappingsBatch" request + And body with value {"atomic:operations":[{"op":"add","data":{"type":"teams_ownership_mappings","attributes":{"team_handle":"team-rum","view_name":"/checkout","service":"web-checkout","application_id":"invalid-uuid","match_type":"exact"}}}]} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/rum-backend + Scenario: Bulk create and remove teams ownership mappings returns "Bad Request. One or more operations failed validation, so none of the operations were applied." response + Given operation "CreateTeamsOwnershipMappingsBatch" enabled + And new "CreateTeamsOwnershipMappingsBatch" request + And body with value {"atomic:operations": [{"data": {"attributes": {"application_id": "11111111-2222-3333-4444-555555555555", "match_type": "exact", "service": "web-checkout", "team_handle": "team-rum", "view_name": "/checkout"}, "type": "teams_ownership_mappings"}, "op": "add", "ref": {"id": "456", "type": "teams_ownership_mappings"}}]} + When the request is sent + Then the response status is 400 Bad Request. One or more operations failed validation, so none of the operations were applied. + + @team:DataDog/rum-backend + Scenario: Bulk create and remove teams ownership mappings returns "OK" response + Given new "CreateTeamsOwnershipMappingsBatch" request + And body with value {"atomic:operations":[{"op":"add","data":{"type":"teams_ownership_mappings","attributes":{"team_handle":"team-rum","view_name":"/checkout","service":"web-checkout","application_id":"11111111-2222-3333-4444-555555555555","match_type":"exact"}}},{"op":"remove","ref":{"type":"teams_ownership_mappings","id":"456"}}]} + When the request is sent + Then the response status is 200 OK + And the response "atomic:results[0].data.type" is equal to "teams_ownership_mappings" + And the response "atomic:results[0].data.attributes.team_handle" is equal to "team-rum" + And the response "atomic:results[0].data.attributes.match_type" is equal to "exact" + + @generated @skip @team:DataDog/rum-backend + Scenario: Create a teams ownership mapping returns "Bad Request" response + Given operation "CreateTeamsOwnershipMapping" enabled + And new "CreateTeamsOwnershipMapping" request + And body with value {"data": {"attributes": {"application_id": "11111111-2222-3333-4444-555555555555", "match_type": "exact", "service": "web-checkout", "team_handle": "team-rum", "view_name": "/checkout"}, "type": "teams_ownership_mappings"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/rum-backend + Scenario: Create a teams ownership mapping returns "Created" response + Given operation "CreateTeamsOwnershipMapping" enabled + And new "CreateTeamsOwnershipMapping" request + And body with value {"data": {"attributes": {"application_id": "11111111-2222-3333-4444-555555555555", "match_type": "exact", "service": "web-checkout", "team_handle": "team-rum", "view_name": "/checkout"}, "type": "teams_ownership_mappings"}} + When the request is sent + Then the response status is 201 Created + + @team:DataDog/rum-backend + Scenario: Create teams ownership mapping returns "Bad Request" response + Given new "CreateTeamsOwnershipMapping" request + And body with value {"data":{"type":"teams_ownership_mappings","attributes":{"team_handle":"team-rum","view_name":"/checkout","service":"web-checkout","application_id":"invalid-uuid","match_type":"exact"}}} + When the request is sent + Then the response status is 400 Bad Request + + @team:DataDog/rum-backend + Scenario: Create teams ownership mapping returns "Created" response + Given new "CreateTeamsOwnershipMapping" request + And body with value {"data":{"type":"teams_ownership_mappings","attributes":{"team_handle":"team-rum","view_name":"/checkout","service":"web-checkout","application_id":"11111111-2222-3333-4444-555555555555","match_type":"exact"}}} + When the request is sent + Then the response status is 201 Created + And the response "data.type" is equal to "teams_ownership_mappings" + And the response "data.attributes.team_handle" is equal to "team-rum" + And the response "data.attributes.view_name" is equal to "/checkout" + And the response "data.attributes.service" is equal to "web-checkout" + And the response "data.attributes.application_id" is equal to "11111111-2222-3333-4444-555555555555" + And the response "data.attributes.match_type" is equal to "exact" + + @team:DataDog/rum-backend + Scenario: Delete a teams ownership mapping returns "No Content" response + Given new "DeleteTeamsOwnershipMapping" request + And request contains "id" parameter with value "123" + When the request is sent + Then the response status is 204 No Content + + @team:DataDog/rum-backend + Scenario: Delete a teams ownership mapping returns "Not Found" response + Given new "DeleteTeamsOwnershipMapping" request + And request contains "id" parameter with value "{{ unique }}" + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/rum-backend + Scenario: Get a teams ownership mapping returns "Not Found" response + Given new "GetTeamsOwnershipMapping" request + And request contains "id" parameter with value "{{ unique }}" + When the request is sent + Then the response status is 404 Not Found + + @team:DataDog/rum-backend + Scenario: Get a teams ownership mapping returns "OK" response + Given new "GetTeamsOwnershipMapping" request + And request contains "id" parameter with value "123" + When the request is sent + Then the response status is 200 OK + And the response "data.id" is equal to "123" + And the response "data.type" is equal to "teams_ownership_mappings" + And the response "data.attributes.team_handle" is equal to "team-rum" + And the response "data.attributes.view_name" is equal to "/checkout" + And the response "data.attributes.match_type" is equal to "exact" + + @team:DataDog/rum-backend + Scenario: List teams ownership mappings returns "OK" response + Given new "ListTeamsOwnershipMappings" request + When the request is sent + Then the response status is 200 OK + And the response "data" has length 1 + And the response "data[0].type" is equal to "teams_ownership_mappings" + And the response "data[0].attributes.team_handle" is equal to "team-rum" + And the response "data[0].attributes.view_name" is equal to "/checkout" + And the response "data[0].attributes.service" is equal to "web-checkout" + And the response "data[0].attributes.application_id" is equal to "11111111-2222-3333-4444-555555555555" + And the response "data[0].attributes.match_type" is equal to "exact" + + @team:DataDog/rum-backend + Scenario: List teams ownership rules returns "OK" response + Given new "ListTeamsOwnershipRules" request + When the request is sent + Then the response status is 200 OK + And the response "data" has length 1 + And the response "data[0].type" is equal to "teams_ownership_grouped_mappings" + And the response "data[0].attributes.view_name" is equal to "/checkout" + And the response "data[0].attributes.match_type" is equal to "exact" diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index df961ee10c..118bc7179d 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -7057,6 +7057,51 @@ "type": "idempotent" } }, + "ListTeamsOwnershipMappings": { + "tag": "Rum Teams Ownership", + "undo": { + "type": "safe" + } + }, + "CreateTeamsOwnershipMapping": { + "tag": "Rum Teams Ownership", + "undo": { + "operationId": "DeleteTeamsOwnershipMapping", + "parameters": [ + { + "name": "id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "CreateTeamsOwnershipMappingsBatch": { + "tag": "Rum Teams Ownership", + "undo": { + "operationId": "CreateTeamsOwnershipMappingsBatch", + "parameters": [], + "type": "unsafe" + } + }, + "DeleteTeamsOwnershipMapping": { + "tag": "Rum Teams Ownership", + "undo": { + "type": "idempotent" + } + }, + "GetTeamsOwnershipMapping": { + "tag": "Rum Teams Ownership", + "undo": { + "type": "safe" + } + }, + "ListTeamsOwnershipRules": { + "tag": "Rum Teams Ownership", + "undo": { + "type": "safe" + } + }, "ListRUMEvents": { "tag": "RUM", "undo": {