diff --git a/.apigentools-info b/.apigentools-info index e9be6ff4b6..04c5948963 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2025-06-16 16:45:04.093324", - "spec_repo_commit": "6e1eb13f" + "regenerated": "2025-06-17 14:56:02.884286", + "spec_repo_commit": "b359fdcc" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2025-06-16 16:45:04.108012", - "spec_repo_commit": "6e1eb13f" + "regenerated": "2025-06-17 14:56:02.899290", + "spec_repo_commit": "b359fdcc" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index b0dcc59585..a16a273762 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -2200,6 +2200,14 @@ components: type: string x-enum-varnames: - BILLING_DIMENSIONS + AddMemberTeamRequest: + description: Request to add a member team to super team's hierarchy + properties: + data: + $ref: '#/components/schemas/MemberTeam' + required: + - data + type: object Advisory: description: Advisory. properties: @@ -21300,6 +21308,28 @@ components: - ms_channel_name - redirect_url type: object + MemberTeam: + description: A member team + properties: + id: + description: The member team's identifier + example: aeadc05e-98a8-11ec-ac2c-da7ad0900001 + type: string + type: + $ref: '#/components/schemas/MemberTeamType' + required: + - id + - type + type: object + MemberTeamType: + default: member_teams + description: Member team type + enum: + - member_teams + example: member_teams + type: string + x-enum-varnames: + - MEMBER_TEAMS Metadata: description: The metadata related to this request. properties: @@ -60442,6 +60472,156 @@ paths: permissions: - teams_read - teams_manage + /api/v2/team/{super_team_id}/member_teams: + get: + description: Get all member teams. + operationId: ListMemberTeams + parameters: + - description: None + in: path + name: super_team_id + required: true + schema: + type: string + - $ref: '#/components/parameters/PageSize' + - $ref: '#/components/parameters/PageNumber' + - description: List of fields that need to be fetched. + explode: false + in: query + name: fields[team] + required: false + schema: + items: + $ref: '#/components/schemas/TeamsField' + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TeamsResponse' + description: OK + '403': + $ref: '#/components/responses/ForbiddenResponse' + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: API error response. + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - teams_read + summary: Get all member teams + tags: + - Teams + x-pagination: + limitParam: page[size] + pageParam: page[number] + resultsPath: data + x-permission: + operator: OR + permissions: + - teams_read + x-unstable: '**Note**: This endpoint is in Preview. If you have any feedback, + + contact [Datadog support](https://docs.datadoghq.com/help/).' + post: + description: 'Add a member team. + + Adds the team given by the `id` in the body as a member team of the super + team.' + operationId: AddMemberTeam + parameters: + - description: None + in: path + name: super_team_id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddMemberTeamRequest' + required: true + responses: + '204': + description: Added + '403': + $ref: '#/components/responses/ForbiddenResponse' + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: API error response. + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - teams_read + summary: Add a member team + tags: + - Teams + x-permission: + operator: OR + permissions: + - teams_read + x-unstable: '**Note**: This endpoint is in Preview. If you have any feedback, + + contact [Datadog support](https://docs.datadoghq.com/help/).' + /api/v2/team/{super_team_id}/member_teams/{member_team_id}: + delete: + description: Remove a super team's member team identified by `member_team_id`. + operationId: RemoveMemberTeam + parameters: + - description: None + in: path + name: super_team_id + required: true + schema: + type: string + - description: None + in: path + name: member_team_id + required: true + schema: + type: string + responses: + '204': + description: No Content + '403': + $ref: '#/components/responses/ForbiddenResponse' + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/APIErrorResponse' + description: API error response. + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - teams_read + summary: Remove a member team + tags: + - Teams + x-permission: + operator: OR + permissions: + - teams_read + x-unstable: '**Note**: This endpoint is in Preview. If you have any feedback, + + contact [Datadog support](https://docs.datadoghq.com/help/).' /api/v2/team/{team_id}: delete: description: Remove a team using the team's `id`. diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 70b08bb58b..0fc30f0c01 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -207,6 +207,13 @@ datadog\_api\_client.v2.model.active\_billing\_dimensions\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.add\_member\_team\_request module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.add_member_team_request + :members: + :show-inheritance: + datadog\_api\_client.v2.model.advisory module --------------------------------------------- @@ -8971,6 +8978,20 @@ datadog\_api\_client.v2.model.logs\_warning module :members: :show-inheritance: +datadog\_api\_client.v2.model.member\_team module +------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.member_team + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.member\_team\_type module +------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.member_team_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.metadata module --------------------------------------------- diff --git a/examples/v2/teams/AddMemberTeam.py b/examples/v2/teams/AddMemberTeam.py new file mode 100644 index 0000000000..1fb1c068f7 --- /dev/null +++ b/examples/v2/teams/AddMemberTeam.py @@ -0,0 +1,22 @@ +""" +Add a member team returns "Added" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.teams_api import TeamsApi +from datadog_api_client.v2.model.add_member_team_request import AddMemberTeamRequest +from datadog_api_client.v2.model.member_team import MemberTeam +from datadog_api_client.v2.model.member_team_type import MemberTeamType + +body = AddMemberTeamRequest( + data=MemberTeam( + id="aeadc05e-98a8-11ec-ac2c-da7ad0900001", + type=MemberTeamType.MEMBER_TEAMS, + ), +) + +configuration = Configuration() +configuration.unstable_operations["add_member_team"] = True +with ApiClient(configuration) as api_client: + api_instance = TeamsApi(api_client) + api_instance.add_member_team(super_team_id="super_team_id", body=body) diff --git a/examples/v2/teams/ListMemberTeams.py b/examples/v2/teams/ListMemberTeams.py new file mode 100644 index 0000000000..900780e579 --- /dev/null +++ b/examples/v2/teams/ListMemberTeams.py @@ -0,0 +1,16 @@ +""" +Get all member teams returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.teams_api import TeamsApi + +configuration = Configuration() +configuration.unstable_operations["list_member_teams"] = True +with ApiClient(configuration) as api_client: + api_instance = TeamsApi(api_client) + response = api_instance.list_member_teams( + super_team_id="super_team_id", + ) + + print(response) diff --git a/examples/v2/teams/ListMemberTeams_1662850354.py b/examples/v2/teams/ListMemberTeams_1662850354.py new file mode 100644 index 0000000000..e0b63b9280 --- /dev/null +++ b/examples/v2/teams/ListMemberTeams_1662850354.py @@ -0,0 +1,16 @@ +""" +Get all member teams returns "OK" response with pagination +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.teams_api import TeamsApi + +configuration = Configuration() +configuration.unstable_operations["list_member_teams"] = True +with ApiClient(configuration) as api_client: + api_instance = TeamsApi(api_client) + items = api_instance.list_member_teams_with_pagination( + super_team_id="super_team_id", + ) + for item in items: + print(item) diff --git a/examples/v2/teams/RemoveMemberTeam.py b/examples/v2/teams/RemoveMemberTeam.py new file mode 100644 index 0000000000..fc7d9393f1 --- /dev/null +++ b/examples/v2/teams/RemoveMemberTeam.py @@ -0,0 +1,15 @@ +""" +Remove a member team returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.teams_api import TeamsApi + +configuration = Configuration() +configuration.unstable_operations["remove_member_team"] = True +with ApiClient(configuration) as api_client: + api_instance = TeamsApi(api_client) + api_instance.remove_member_team( + super_team_id="super_team_id", + member_team_id="member_team_id", + ) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index 166d90ab60..40f328a571 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -314,6 +314,9 @@ def __init__( "v2.create_slo_report_job": False, "v2.get_slo_report": False, "v2.get_slo_report_job_status": False, + "v2.add_member_team": False, + "v2.list_member_teams": False, + "v2.remove_member_team": False, "v2.create_incident_team": False, "v2.delete_incident_team": False, "v2.get_incident_team": False, diff --git a/src/datadog_api_client/v2/api/teams_api.py b/src/datadog_api_client/v2/api/teams_api.py index a81c425567..5de3850c8a 100644 --- a/src/datadog_api_client/v2/api/teams_api.py +++ b/src/datadog_api_client/v2/api/teams_api.py @@ -21,6 +21,7 @@ from datadog_api_client.v2.model.team import Team from datadog_api_client.v2.model.team_response import TeamResponse from datadog_api_client.v2.model.team_create_request import TeamCreateRequest +from datadog_api_client.v2.model.add_member_team_request import AddMemberTeamRequest from datadog_api_client.v2.model.team_update_request import TeamUpdateRequest from datadog_api_client.v2.model.team_links_response import TeamLinksResponse from datadog_api_client.v2.model.team_link_response import TeamLinkResponse @@ -46,6 +47,32 @@ def __init__(self, api_client=None): api_client = ApiClient(Configuration()) self.api_client = api_client + self._add_member_team_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/team/{super_team_id}/member_teams", + "operation_id": "add_member_team", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "super_team_id": { + "required": True, + "openapi_types": (str,), + "attribute": "super_team_id", + "location": "path", + }, + "body": { + "required": True, + "openapi_types": (AddMemberTeamRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["*/*"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._create_team_endpoint = _Endpoint( settings={ "response_type": (TeamResponse,), @@ -363,6 +390,45 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._list_member_teams_endpoint = _Endpoint( + settings={ + "response_type": (TeamsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/team/{super_team_id}/member_teams", + "operation_id": "list_member_teams", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "super_team_id": { + "required": True, + "openapi_types": (str,), + "attribute": "super_team_id", + "location": "path", + }, + "page_size": { + "openapi_types": (int,), + "attribute": "page[size]", + "location": "query", + }, + "page_number": { + "openapi_types": (int,), + "attribute": "page[number]", + "location": "query", + }, + "fields_team": { + "openapi_types": ([TeamsField],), + "attribute": "fields[team]", + "location": "query", + "collection_format": "csv", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._list_teams_endpoint = _Endpoint( settings={ "response_type": (TeamsResponse,), @@ -417,6 +483,35 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._remove_member_team_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/team/{super_team_id}/member_teams/{member_team_id}", + "operation_id": "remove_member_team", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "super_team_id": { + "required": True, + "openapi_types": (str,), + "attribute": "super_team_id", + "location": "path", + }, + "member_team_id": { + "required": True, + "openapi_types": (str,), + "attribute": "member_team_id", + "location": "path", + }, + }, + headers_map={ + "accept": ["*/*"], + }, + api_client=api_client, + ) + self._update_team_endpoint = _Endpoint( settings={ "response_type": (TeamResponse,), @@ -539,6 +634,28 @@ def __init__(self, api_client=None): api_client=api_client, ) + def add_member_team( + self, + super_team_id: str, + body: AddMemberTeamRequest, + ) -> None: + """Add a member team. + + Add a member team. + Adds the team given by the ``id`` in the body as a member team of the super team. + + :param super_team_id: None + :type super_team_id: str + :type body: AddMemberTeamRequest + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["super_team_id"] = super_team_id + + kwargs["body"] = body + + return self._add_member_team_endpoint.call_with_http_info(**kwargs) + def create_team( self, body: TeamCreateRequest, @@ -845,6 +962,90 @@ def get_user_memberships( return self._get_user_memberships_endpoint.call_with_http_info(**kwargs) + def list_member_teams( + self, + super_team_id: str, + *, + page_size: Union[int, UnsetType] = unset, + page_number: Union[int, UnsetType] = unset, + fields_team: Union[List[TeamsField], UnsetType] = unset, + ) -> TeamsResponse: + """Get all member teams. + + Get all member teams. + + :param super_team_id: None + :type super_team_id: str + :param page_size: Size for a given page. The maximum allowed value is 100. + :type page_size: int, optional + :param page_number: Specific page number to return. + :type page_number: int, optional + :param fields_team: List of fields that need to be fetched. + :type fields_team: [TeamsField], optional + :rtype: TeamsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["super_team_id"] = super_team_id + + if page_size is not unset: + kwargs["page_size"] = page_size + + if page_number is not unset: + kwargs["page_number"] = page_number + + if fields_team is not unset: + kwargs["fields_team"] = fields_team + + return self._list_member_teams_endpoint.call_with_http_info(**kwargs) + + def list_member_teams_with_pagination( + self, + super_team_id: str, + *, + page_size: Union[int, UnsetType] = unset, + page_number: Union[int, UnsetType] = unset, + fields_team: Union[List[TeamsField], UnsetType] = unset, + ) -> collections.abc.Iterable[Team]: + """Get all member teams. + + Provide a paginated version of :meth:`list_member_teams`, returning all items. + + :param super_team_id: None + :type super_team_id: str + :param page_size: Size for a given page. The maximum allowed value is 100. + :type page_size: int, optional + :param page_number: Specific page number to return. + :type page_number: int, optional + :param fields_team: List of fields that need to be fetched. + :type fields_team: [TeamsField], optional + + :return: A generator of paginated results. + :rtype: collections.abc.Iterable[Team] + """ + kwargs: Dict[str, Any] = {} + kwargs["super_team_id"] = super_team_id + + if page_size is not unset: + kwargs["page_size"] = page_size + + if page_number is not unset: + kwargs["page_number"] = page_number + + if fields_team is not unset: + kwargs["fields_team"] = fields_team + + local_page_size = get_attribute_from_path(kwargs, "page_size", 10) + endpoint = self._list_member_teams_endpoint + set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map) + pagination = { + "limit_value": local_page_size, + "results_path": "data", + "page_param": "page_number", + "endpoint": endpoint, + "kwargs": kwargs, + } + return endpoint.call_with_http_info_paginated(pagination) + def list_teams( self, *, @@ -968,6 +1169,28 @@ def list_teams_with_pagination( } return endpoint.call_with_http_info_paginated(pagination) + def remove_member_team( + self, + super_team_id: str, + member_team_id: str, + ) -> None: + """Remove a member team. + + Remove a super team's member team identified by ``member_team_id``. + + :param super_team_id: None + :type super_team_id: str + :param member_team_id: None + :type member_team_id: str + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["super_team_id"] = super_team_id + + kwargs["member_team_id"] = member_team_id + + return self._remove_member_team_endpoint.call_with_http_info(**kwargs) + def update_team( self, team_id: str, diff --git a/src/datadog_api_client/v2/model/add_member_team_request.py b/src/datadog_api_client/v2/model/add_member_team_request.py new file mode 100644 index 0000000000..78338c224c --- /dev/null +++ b/src/datadog_api_client/v2/model/add_member_team_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.member_team import MemberTeam + + +class AddMemberTeamRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.member_team import MemberTeam + + return { + "data": (MemberTeam,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: MemberTeam, **kwargs): + """ + Request to add a member team to super team's hierarchy + + :param data: A member team + :type data: MemberTeam + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/member_team.py b/src/datadog_api_client/v2/model/member_team.py new file mode 100644 index 0000000000..5cf760053b --- /dev/null +++ b/src/datadog_api_client/v2/model/member_team.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.member_team_type import MemberTeamType + + +class MemberTeam(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.member_team_type import MemberTeamType + + return { + "id": (str,), + "type": (MemberTeamType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: MemberTeamType, **kwargs): + """ + A member team + + :param id: The member team's identifier + :type id: str + + :param type: Member team type + :type type: MemberTeamType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/member_team_type.py b/src/datadog_api_client/v2/model/member_team_type.py new file mode 100644 index 0000000000..3f432feb94 --- /dev/null +++ b/src/datadog_api_client/v2/model/member_team_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 MemberTeamType(ModelSimple): + """ + Member team type + + :param value: If omitted defaults to "member_teams". Must be one of ["member_teams"]. + :type value: str + """ + + allowed_values = { + "member_teams", + } + MEMBER_TEAMS: ClassVar["MemberTeamType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MemberTeamType.MEMBER_TEAMS = MemberTeamType("member_teams") diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 436bec9e1c..2adcfd4097 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -91,6 +91,7 @@ from datadog_api_client.v2.model.active_billing_dimensions_body import ActiveBillingDimensionsBody from datadog_api_client.v2.model.active_billing_dimensions_response import ActiveBillingDimensionsResponse from datadog_api_client.v2.model.active_billing_dimensions_type import ActiveBillingDimensionsType +from datadog_api_client.v2.model.add_member_team_request import AddMemberTeamRequest from datadog_api_client.v2.model.advisory import Advisory from datadog_api_client.v2.model.annotation import Annotation from datadog_api_client.v2.model.annotation_display import AnnotationDisplay @@ -1620,6 +1621,8 @@ from datadog_api_client.v2.model.logs_warning import LogsWarning from datadog_api_client.v2.model.ms_teams_integration_metadata import MSTeamsIntegrationMetadata from datadog_api_client.v2.model.ms_teams_integration_metadata_teams_item import MSTeamsIntegrationMetadataTeamsItem +from datadog_api_client.v2.model.member_team import MemberTeam +from datadog_api_client.v2.model.member_team_type import MemberTeamType from datadog_api_client.v2.model.metadata import Metadata from datadog_api_client.v2.model.metric import Metric from datadog_api_client.v2.model.metric_active_configuration_type import MetricActiveConfigurationType @@ -3581,6 +3584,7 @@ "ActiveBillingDimensionsBody", "ActiveBillingDimensionsResponse", "ActiveBillingDimensionsType", + "AddMemberTeamRequest", "Advisory", "Annotation", "AnnotationDisplay", @@ -4774,6 +4778,8 @@ "LogsWarning", "MSTeamsIntegrationMetadata", "MSTeamsIntegrationMetadataTeamsItem", + "MemberTeam", + "MemberTeamType", "Metadata", "Metric", "MetricActiveConfigurationType", diff --git a/tests/v2/features/teams.feature b/tests/v2/features/teams.feature index 5d4069034c..4cdf61f0fa 100644 --- a/tests/v2/features/teams.feature +++ b/tests/v2/features/teams.feature @@ -9,6 +9,24 @@ Feature: Teams And a valid "appKeyAuth" key in the system And an instance of "Teams" API + @generated @skip @team:DataDog/core-app + Scenario: Add a member team returns "API error response." response + Given operation "AddMemberTeam" enabled + And new "AddMemberTeam" request + And request contains "super_team_id" parameter from "REPLACE.ME" + And body with value {"data": {"id": "aeadc05e-98a8-11ec-ac2c-da7ad0900001", "type": "member_teams"}} + When the request is sent + Then the response status is 409 API error response. + + @generated @skip @team:DataDog/core-app + Scenario: Add a member team returns "Added" response + Given operation "AddMemberTeam" enabled + And new "AddMemberTeam" request + And request contains "super_team_id" parameter from "REPLACE.ME" + And body with value {"data": {"id": "aeadc05e-98a8-11ec-ac2c-da7ad0900001", "type": "member_teams"}} + When the request is sent + Then the response status is 204 Added + @generated @skip @team:DataDog/core-app Scenario: Add a user to a team returns "API error response." response Given new "CreateTeamMembership" request @@ -112,6 +130,30 @@ Feature: Teams When the request is sent Then the response status is 200 OK + @generated @skip @team:DataDog/core-app + Scenario: Get all member teams returns "API error response." response + Given operation "ListMemberTeams" enabled + And new "ListMemberTeams" request + And request contains "super_team_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 API error response. + + @generated @skip @team:DataDog/core-app + Scenario: Get all member teams returns "OK" response + Given operation "ListMemberTeams" enabled + And new "ListMemberTeams" request + And request contains "super_team_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/core-app @with-pagination + Scenario: Get all member teams returns "OK" response with pagination + Given operation "ListMemberTeams" enabled + And new "ListMemberTeams" request + And request contains "super_team_id" parameter from "REPLACE.ME" + When the request with pagination is sent + Then the response status is 200 OK + @team:DataDog/core-app Scenario: Get all teams returns "OK" response Given new "ListTeams" request @@ -209,6 +251,24 @@ Feature: Teams Then the response status is 200 Represents a user's association to a team And the response "data" has length 0 + @generated @skip @team:DataDog/core-app + Scenario: Remove a member team returns "API error response." response + Given operation "RemoveMemberTeam" enabled + And new "RemoveMemberTeam" request + And request contains "super_team_id" parameter from "REPLACE.ME" + And request contains "member_team_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 API error response. + + @generated @skip @team:DataDog/core-app + Scenario: Remove a member team returns "No Content" response + Given operation "RemoveMemberTeam" enabled + And new "RemoveMemberTeam" request + And request contains "super_team_id" parameter from "REPLACE.ME" + And request contains "member_team_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + @team:DataDog/core-app Scenario: Remove a team link returns "API error response." response Given new "DeleteTeamLink" request diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 2d33b5cd71..e81cb7b7ce 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -3241,6 +3241,25 @@ "type": "unsafe" } }, + "ListMemberTeams": { + "tag": "Teams", + "undo": { + "type": "safe" + } + }, + "AddMemberTeam": { + "tag": "Teams", + "undo": { + "operationId": "RemoveMemberTeam", + "type": "unsafe" + } + }, + "RemoveMemberTeam": { + "tag": "Teams", + "undo": { + "type": "idempotent" + } + }, "DeleteTeam": { "tag": "Teams", "undo": {