Skip to content

Commit dc9ee45

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add pagination helper for team memberships (#1851)
Co-authored-by: ci.datadog-api-spec <[email protected]> Co-authored-by: api-clients-generation-pipeline[bot] <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com>
1 parent 73de2e2 commit dc9ee45

File tree

7 files changed

+129
-4
lines changed

7 files changed

+129
-4
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.6",
7-
"regenerated": "2024-01-26 15:59:24.698075",
8-
"spec_repo_commit": "28baf464"
7+
"regenerated": "2024-01-26 20:57:00.588070",
8+
"spec_repo_commit": "a1db94fd"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2024-01-26 15:59:24.713107",
13-
"spec_repo_commit": "28baf464"
12+
"regenerated": "2024-01-26 20:57:00.671832",
13+
"spec_repo_commit": "a1db94fd"
1414
}
1515
}
1616
}

.generator/schemas/v2/openapi.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31989,6 +31989,10 @@ paths:
3198931989
summary: Get team memberships
3199031990
tags:
3199131991
- Teams
31992+
x-pagination:
31993+
limitParam: page[size]
31994+
pageParam: page[number]
31995+
resultsPath: data
3199231996
post:
3199331997
description: Add a user to a team.
3199431998
operationId: CreateTeamMembership
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""
2+
Get team memberships returns "Represents a user's association to a team" response with pagination
3+
"""
4+
5+
from datadog_api_client import ApiClient, Configuration
6+
from datadog_api_client.v2.api.teams_api import TeamsApi
7+
8+
configuration = Configuration()
9+
with ApiClient(configuration) as api_client:
10+
api_instance = TeamsApi(api_client)
11+
items = api_instance.get_team_memberships_with_pagination(
12+
team_id="2e06bf2c-193b-41d4-b3c2-afccc080458f",
13+
page_size=2,
14+
)
15+
for item in items:
16+
print(item)

src/datadog_api_client/v2/api/teams_api.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from datadog_api_client.v2.model.team_link_create_request import TeamLinkCreateRequest
2828
from datadog_api_client.v2.model.user_teams_response import UserTeamsResponse
2929
from datadog_api_client.v2.model.get_team_memberships_sort import GetTeamMembershipsSort
30+
from datadog_api_client.v2.model.user_team import UserTeam
3031
from datadog_api_client.v2.model.user_team_response import UserTeamResponse
3132
from datadog_api_client.v2.model.user_team_request import UserTeamRequest
3233
from datadog_api_client.v2.model.user_team_update_request import UserTeamUpdateRequest
@@ -756,6 +757,60 @@ def get_team_memberships(
756757

757758
return self._get_team_memberships_endpoint.call_with_http_info(**kwargs)
758759

760+
def get_team_memberships_with_pagination(
761+
self,
762+
team_id: str,
763+
*,
764+
page_size: Union[int, UnsetType] = unset,
765+
page_number: Union[int, UnsetType] = unset,
766+
sort: Union[GetTeamMembershipsSort, UnsetType] = unset,
767+
filter_keyword: Union[str, UnsetType] = unset,
768+
) -> collections.abc.Iterable[UserTeam]:
769+
"""Get team memberships.
770+
771+
Provide a paginated version of :meth:`get_team_memberships`, returning all items.
772+
773+
:param team_id: None
774+
:type team_id: str
775+
:param page_size: Size for a given page. The maximum allowed value is 100.
776+
:type page_size: int, optional
777+
:param page_number: Specific page number to return.
778+
:type page_number: int, optional
779+
:param sort: Specifies the order of returned team memberships
780+
:type sort: GetTeamMembershipsSort, optional
781+
:param filter_keyword: Search query, can be user email or name
782+
:type filter_keyword: str, optional
783+
784+
:return: A generator of paginated results.
785+
:rtype: collections.abc.Iterable[UserTeam]
786+
"""
787+
kwargs: Dict[str, Any] = {}
788+
kwargs["team_id"] = team_id
789+
790+
if page_size is not unset:
791+
kwargs["page_size"] = page_size
792+
793+
if page_number is not unset:
794+
kwargs["page_number"] = page_number
795+
796+
if sort is not unset:
797+
kwargs["sort"] = sort
798+
799+
if filter_keyword is not unset:
800+
kwargs["filter_keyword"] = filter_keyword
801+
802+
local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
803+
endpoint = self._get_team_memberships_endpoint
804+
set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
805+
pagination = {
806+
"limit_value": local_page_size,
807+
"results_path": "data",
808+
"page_param": "page_number",
809+
"endpoint": endpoint,
810+
"kwargs": kwargs,
811+
}
812+
return endpoint.call_with_http_info_paginated(pagination)
813+
759814
def get_team_permission_settings(
760815
self,
761816
team_id: str,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2024-01-26T20:53:20.323Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
interactions:
2+
- request:
3+
body: null
4+
headers:
5+
accept:
6+
- application/json
7+
method: GET
8+
uri: https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page%5Bsize%5D=2&page%5Bnumber%5D=0
9+
response:
10+
body:
11+
string: '{"data":[{"type":"team_memberships","id":"TeamMembership-2e06bf2c-193b-41d4-b3c2-afccc080458f-3736692","attributes":{"role":null,"provisioned_by":null,"provisioned_by_id":"6018c832-80a7-11ea-93dd-43183212bc7a"},"relationships":{"user":{"data":{"type":"users","id":"03b4bfc0-98b9-11ec-842d-da7ad0900002"}}}},{"type":"team_memberships","id":"TeamMembership-2e06bf2c-193b-41d4-b3c2-afccc080458f-4055096","attributes":{"role":null,"provisioned_by":null,"provisioned_by_id":"6018c832-80a7-11ea-93dd-43183212bc7a"},"relationships":{"user":{"data":{"type":"users","id":"170a64a1-d9c6-11ec-af01-da7ad0900002"}}}}],"included":[{"type":"users","id":"03b4bfc0-98b9-11ec-842d-da7ad0900002","attributes":{"name":"Datadog
12+
API Client Python","handle":"example-create_a_user_returns_ok_response_1646068093@datadoghq.com","email":"example-create_a_user_returns_ok_response_1646068093@datadoghq.com","icon":"https://secure.gravatar.com/avatar/27fb863ad335246b65fe4989f1686f35?s=48&d=retro","disabled":false,"service_account":false}},{"type":"users","id":"170a64a1-d9c6-11ec-af01-da7ad0900002","attributes":{"name":"Datadog
13+
API Client Python","handle":"example-create_a_user_returns_ok_response_1653220535@datadoghq.com","email":"example-create_a_user_returns_ok_response_1653220535@datadoghq.com","icon":"https://secure.gravatar.com/avatar/c5256983bba478dfd35e83bbb73621cc?s=48&d=retro","disabled":false,"service_account":false}}],"meta":{"pagination":{"number":0,"first_number":0,"prev_number":0,"next_number":1,"last_number":1,"size":2,"type":"number_size","total":3}},"links":{"self":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page%5Bsize%5D=2&page%5Bnumber%5D=0","last":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page[number]=1&page[size]=2","next":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page[number]=1&page[size]=2","prev":null,"first":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page[number]=0&page[size]=2"}}
14+
15+
'
16+
headers:
17+
content-type:
18+
- application/json
19+
status:
20+
code: 200
21+
message: OK
22+
- request:
23+
body: null
24+
headers:
25+
accept:
26+
- application/json
27+
method: GET
28+
uri: https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page%5Bsize%5D=2&page%5Bnumber%5D=1
29+
response:
30+
body:
31+
string: '{"data":[{"type":"team_memberships","id":"TeamMembership-2e06bf2c-193b-41d4-b3c2-afccc080458f-1445416","attributes":{"role":null,"provisioned_by":null,"provisioned_by_id":"6018c832-80a7-11ea-93dd-43183212bc7a"},"relationships":{"user":{"data":{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0"}}}}],"included":[{"type":"users","id":"3ad549bf-eba0-11e9-a77a-0705486660d0","attributes":{"name":null,"handle":"[email protected]","email":"[email protected]","icon":"https://secure.gravatar.com/avatar/28a16dfe36e73b60c1d55872cb0f1172?s=48&d=retro","disabled":false,"service_account":false}}],"meta":{"pagination":{"number":1,"first_number":0,"prev_number":0,"next_number":2,"last_number":1,"size":2,"type":"number_size","total":3}},"links":{"self":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page%5Bsize%5D=2&page%5Bnumber%5D=1","last":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page[number]=1&page[size]=2","next":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page[number]=2&page[size]=2","prev":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page[number]=0&page[size]=2","first":"https://api.datadoghq.com/api/v2/team/2e06bf2c-193b-41d4-b3c2-afccc080458f/memberships?page[number]=0&page[size]=2"}}
32+
33+
'
34+
headers:
35+
content-type:
36+
- application/json
37+
status:
38+
code: 200
39+
message: OK
40+
version: 1

tests/v2/features/teams.feature

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,15 @@ Feature: Teams
182182
When the request is sent
183183
Then the response status is 200 Represents a user's association to a team
184184

185+
@replay-only @skip-validation @team:DataDog/core-app @with-pagination
186+
Scenario: Get team memberships returns "Represents a user's association to a team" response with pagination
187+
Given new "GetTeamMemberships" request
188+
And request contains "team_id" parameter with value "2e06bf2c-193b-41d4-b3c2-afccc080458f"
189+
And request contains "page[size]" parameter with value 2
190+
When the request with pagination is sent
191+
Then the response status is 200 OK
192+
And the response has 3 items
193+
185194
@generated @skip @team:DataDog/core-app
186195
Scenario: Get user memberships returns "API error response." response
187196
Given new "GetUserMemberships" request

0 commit comments

Comments
 (0)