Skip to content

Commit b43be09

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add additional UpdateTeamMembership scenarios (DataDog#3699)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent f1b058a commit b43be09

12 files changed

Lines changed: 365 additions & 17 deletions

.generator/schemas/v2/openapi.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101462,7 +101462,13 @@ paths:
101462101462
application/json:
101463101463
schema:
101464101464
$ref: '#/components/schemas/UserTeamResponse'
101465-
description: Represents a user's association to a team
101465+
description: OK
101466+
'400':
101467+
content:
101468+
application/json:
101469+
schema:
101470+
$ref: '#/components/schemas/APIErrorResponse'
101471+
description: API error response.
101466101472
'403':
101467101473
$ref: '#/components/responses/ForbiddenResponse'
101468101474
'404':

api/datadogV2/api_teams.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3076,7 +3076,7 @@ func (a *TeamsApi) UpdateTeamMembership(ctx _context.Context, teamId string, use
30763076
ErrorBody: localVarBody,
30773077
ErrorMessage: localVarHTTPResponse.Status,
30783078
}
3079-
if localVarHTTPResponse.StatusCode == 403 || localVarHTTPResponse.StatusCode == 404 || localVarHTTPResponse.StatusCode == 429 {
3079+
if localVarHTTPResponse.StatusCode == 400 || localVarHTTPResponse.StatusCode == 403 || localVarHTTPResponse.StatusCode == 404 || localVarHTTPResponse.StatusCode == 429 {
30803080
var v APIErrorResponse
30813081
err = a.Client.Decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
30823082
if err != nil {

examples/v2/teams/UpdateTeamMembership.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Update a user's membership attributes on a team returns "Represents a user's association to a team" response
1+
// Update a user's membership attributes on a team returns "OK" response
22

33
package main
44

@@ -13,6 +13,12 @@ import (
1313
)
1414

1515
func main() {
16+
// there is a valid "dd_team" in the system
17+
DdTeamDataID := os.Getenv("DD_TEAM_DATA_ID")
18+
19+
// there is a valid "user" in the system
20+
UserDataID := os.Getenv("USER_DATA_ID")
21+
1622
body := datadogV2.UserTeamUpdateRequest{
1723
Data: datadogV2.UserTeamUpdate{
1824
Attributes: &datadogV2.UserTeamAttributes{
@@ -25,7 +31,7 @@ func main() {
2531
configuration := datadog.NewConfiguration()
2632
apiClient := datadog.NewAPIClient(configuration)
2733
api := datadogV2.NewTeamsApi(apiClient)
28-
resp, r, err := api.UpdateTeamMembership(ctx, "team_id", "user_id", body)
34+
resp, r, err := api.UpdateTeamMembership(ctx, DdTeamDataID, UserDataID, body)
2935

3036
if err != nil {
3137
fmt.Fprintf(os.Stderr, "Error when calling `TeamsApi.UpdateTeamMembership`: %v\n", err)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2026-02-12T14:57:57.281Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
interactions:
2+
- request:
3+
body: |
4+
{"data":{"attributes":{"handle":"test-handle-d1ea4282abe3f68d","name":"test-name-d1ea4282abe3f68d"},"type":"team"}}
5+
form: {}
6+
headers:
7+
Accept:
8+
- application/json
9+
Content-Type:
10+
- application/json
11+
id: 0
12+
method: POST
13+
url: https://api.datadoghq.com/api/v2/team
14+
response:
15+
body: '{"data":{"id":"587b5f1a-b8ef-42b7-a99a-746cb80422a4","type":"team","attributes":{"avatar":null,"banner":6,"created_at":"2026-02-12T14:57:57.783497+00:00","description":null,"handle":"test-handle-d1ea4282abe3f68d","hidden_modules":null,"is_managed":false,"link_count":0,"modified_at":"2026-02-12T14:57:57.783497+00:00","name":"test-name-d1ea4282abe3f68d","summary":null,"user_count":0,"visible_modules":null},"relationships":{"team_links":{"data":[],"links":{"related":"/api/v2/team/587b5f1a-b8ef-42b7-a99a-746cb80422a4/links"}},"user_team_permissions":{"data":null,"links":{"related":"/api/v2/team/587b5f1a-b8ef-42b7-a99a-746cb80422a4/permission-settings"}}}}}'
16+
code: 201
17+
duration: 0ms
18+
headers:
19+
Content-Type:
20+
- application/vnd.api+json
21+
status: 201 Created
22+
- request:
23+
body: |
24+
{"data":{"attributes":{"role":"admin"},"type":"team_memberships"}}
25+
form: {}
26+
headers:
27+
Accept:
28+
- application/json
29+
Content-Type:
30+
- application/json
31+
id: 1
32+
method: PATCH
33+
url: https://api.datadoghq.com/api/v2/team/587b5f1a-b8ef-42b7-a99a-746cb80422a4/memberships/00000000-0000-dead-beef-000000000000
34+
response:
35+
body: '{"errors":["User for ID 00000000-0000-dead-beef-000000000000 not found"]}'
36+
code: 404
37+
duration: 0ms
38+
headers:
39+
Content-Type:
40+
- application/json
41+
status: 404 Not Found
42+
- request:
43+
body: ''
44+
form: {}
45+
headers:
46+
Accept:
47+
- '*/*'
48+
id: 2
49+
method: DELETE
50+
url: https://api.datadoghq.com/api/v2/team/587b5f1a-b8ef-42b7-a99a-746cb80422a4
51+
response:
52+
body: ''
53+
code: 204
54+
duration: 0ms
55+
headers: {}
56+
status: 204 No Content
57+
version: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2026-02-12T14:59:46.756Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
interactions:
2+
- request:
3+
body: |
4+
{"data":{"attributes":{"handle":"test-handle-ae403c8f160ec46f","name":"test-name-ae403c8f160ec46f"},"type":"team"}}
5+
form: {}
6+
headers:
7+
Accept:
8+
- application/json
9+
Content-Type:
10+
- application/json
11+
id: 0
12+
method: POST
13+
url: https://api.datadoghq.com/api/v2/team
14+
response:
15+
body: '{"data":{"id":"38c0d1d3-69c0-4452-95a0-0115b22f2607","type":"team","attributes":{"avatar":null,"banner":13,"created_at":"2026-02-12T14:59:47.252294+00:00","description":null,"handle":"test-handle-ae403c8f160ec46f","hidden_modules":null,"is_managed":false,"link_count":0,"modified_at":"2026-02-12T14:59:47.252294+00:00","name":"test-name-ae403c8f160ec46f","summary":null,"user_count":0,"visible_modules":null},"relationships":{"team_links":{"data":[],"links":{"related":"/api/v2/team/38c0d1d3-69c0-4452-95a0-0115b22f2607/links"}},"user_team_permissions":{"data":null,"links":{"related":"/api/v2/team/38c0d1d3-69c0-4452-95a0-0115b22f2607/permission-settings"}}}}}'
16+
code: 201
17+
duration: 0ms
18+
headers:
19+
Content-Type:
20+
- application/vnd.api+json
21+
status: 201 Created
22+
- request:
23+
body: |
24+
{"data":{"attributes":{"email":"Test-Update_a_user_s_membership_attributes_on_a_team_returns_OK_response-1770908386@datadoghq.com","title":"user title"},"type":"users"}}
25+
form: {}
26+
headers:
27+
Accept:
28+
- application/json
29+
Content-Type:
30+
- application/json
31+
id: 1
32+
method: POST
33+
url: https://api.datadoghq.com/api/v2/users
34+
response:
35+
body: '{"data":{"type":"users","id":"3330c2ed-ac5d-458e-875b-ffc85c436edc","attributes":{"name":null,"handle":"test-update_a_user_s_membership_attributes_on_a_team_returns_ok_response-1770908386@datadoghq.com","created_at":"2026-02-12T14:59:47.812309+00:00","modified_at":"2026-02-12T14:59:47.812309+00:00","email":"test-update_a_user_s_membership_attributes_on_a_team_returns_ok_response-1770908386@datadoghq.com","icon":"https://secure.gravatar.com/avatar/7906350a0aeb9c3285de81609654b5df?s=48&d=retro","title":"user
36+
title","verified":false,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Pending","last_login_time":null},"relationships":{"roles":{"data":[]},"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}}
37+
38+
'
39+
code: 201
40+
duration: 0ms
41+
headers:
42+
Content-Type:
43+
- application/json
44+
status: 201 Created
45+
- request:
46+
body: |
47+
{"data":{"attributes":{"role":"admin"},"relationships":{"user":{"data":{"id":"3330c2ed-ac5d-458e-875b-ffc85c436edc","type":"users"}}},"type":"team_memberships"}}
48+
form: {}
49+
headers:
50+
Accept:
51+
- application/json
52+
Content-Type:
53+
- application/json
54+
id: 2
55+
method: POST
56+
url: https://api.datadoghq.com/api/v2/team/38c0d1d3-69c0-4452-95a0-0115b22f2607/memberships
57+
response:
58+
body: '{"data":{"id":"TeamMembership-38c0d1d3-69c0-4452-95a0-0115b22f2607-65393600","type":"team_memberships","attributes":{"provisioned_by":null,"provisioned_by_id":"3ad549bf-eba0-11e9-a77a-0705486660d0","role":"admin"},"relationships":{"user":{"data":{"id":"3330c2ed-ac5d-458e-875b-ffc85c436edc","type":"users"}}}},"included":[{"id":"3330c2ed-ac5d-458e-875b-ffc85c436edc","type":"users","attributes":{"disabled":false,"email":"test-update_a_user_s_membership_attributes_on_a_team_returns_ok_response-1770908386@datadoghq.com","handle":"test-update_a_user_s_membership_attributes_on_a_team_returns_ok_response-1770908386@datadoghq.com","icon":"https://secure.gravatar.com/avatar/7906350a0aeb9c3285de81609654b5df?d=retro\u0026s=48","name":null,"service_account":false,"status":"Pending"}}]}'
59+
code: 200
60+
duration: 0ms
61+
headers:
62+
Content-Type:
63+
- application/vnd.api+json
64+
status: 200 OK
65+
- request:
66+
body: |
67+
{"data":{"attributes":{"role":"admin"},"type":"team_memberships"}}
68+
form: {}
69+
headers:
70+
Accept:
71+
- application/json
72+
Content-Type:
73+
- application/json
74+
id: 3
75+
method: PATCH
76+
url: https://api.datadoghq.com/api/v2/team/38c0d1d3-69c0-4452-95a0-0115b22f2607/memberships/3330c2ed-ac5d-458e-875b-ffc85c436edc
77+
response:
78+
body: '{"data":{"type":"team_memberships","id":"TeamMembership-38c0d1d3-69c0-4452-95a0-0115b22f2607-65393600","attributes":{"role":"admin","provisioned_by":null,"provisioned_by_id":"3ad549bf-eba0-11e9-a77a-0705486660d0"},"relationships":{"user":{"data":{"type":"users","id":"3330c2ed-ac5d-458e-875b-ffc85c436edc"}}}},"included":[{"type":"users","id":"3330c2ed-ac5d-458e-875b-ffc85c436edc","attributes":{"name":null,"handle":"test-update_a_user_s_membership_attributes_on_a_team_returns_ok_response-1770908386@datadoghq.com","email":"test-update_a_user_s_membership_attributes_on_a_team_returns_ok_response-1770908386@datadoghq.com","icon":"https://secure.gravatar.com/avatar/7906350a0aeb9c3285de81609654b5df?s=48&d=retro","disabled":false,"service_account":false}}]}
79+
80+
'
81+
code: 200
82+
duration: 0ms
83+
headers:
84+
Content-Type:
85+
- application/json
86+
status: 200 OK
87+
- request:
88+
body: ''
89+
form: {}
90+
headers:
91+
Accept:
92+
- '*/*'
93+
id: 4
94+
method: DELETE
95+
url: https://api.datadoghq.com/api/v2/team/38c0d1d3-69c0-4452-95a0-0115b22f2607/memberships/3330c2ed-ac5d-458e-875b-ffc85c436edc
96+
response:
97+
body: ''
98+
code: 204
99+
duration: 0ms
100+
headers: {}
101+
status: 204 No Content
102+
- request:
103+
body: ''
104+
form: {}
105+
headers:
106+
Accept:
107+
- '*/*'
108+
id: 5
109+
method: DELETE
110+
url: https://api.datadoghq.com/api/v2/users/3330c2ed-ac5d-458e-875b-ffc85c436edc
111+
response:
112+
body: ''
113+
code: 204
114+
duration: 0ms
115+
headers: {}
116+
status: 204 No Content
117+
- request:
118+
body: ''
119+
form: {}
120+
headers:
121+
Accept:
122+
- '*/*'
123+
id: 6
124+
method: DELETE
125+
url: https://api.datadoghq.com/api/v2/team/38c0d1d3-69c0-4452-95a0-0115b22f2607
126+
response:
127+
body: ''
128+
code: 204
129+
duration: 0ms
130+
headers: {}
131+
status: 204 No Content
132+
version: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2026-02-12T15:00:05.356Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
interactions:
2+
- request:
3+
body: |
4+
{"data":{"attributes":{"handle":"test-handle-ff2b53b6514455c7","name":"test-name-ff2b53b6514455c7"},"type":"team"}}
5+
form: {}
6+
headers:
7+
Accept:
8+
- application/json
9+
Content-Type:
10+
- application/json
11+
id: 0
12+
method: POST
13+
url: https://api.datadoghq.com/api/v2/team
14+
response:
15+
body: '{"data":{"id":"9c2a3be7-8a43-4f37-bc3d-88248875f867","type":"team","attributes":{"avatar":null,"banner":3,"created_at":"2026-02-12T15:00:05.867555+00:00","description":null,"handle":"test-handle-ff2b53b6514455c7","hidden_modules":null,"is_managed":false,"link_count":0,"modified_at":"2026-02-12T15:00:05.867555+00:00","name":"test-name-ff2b53b6514455c7","summary":null,"user_count":0,"visible_modules":null},"relationships":{"team_links":{"data":[],"links":{"related":"/api/v2/team/9c2a3be7-8a43-4f37-bc3d-88248875f867/links"}},"user_team_permissions":{"data":null,"links":{"related":"/api/v2/team/9c2a3be7-8a43-4f37-bc3d-88248875f867/permission-settings"}}}}}'
16+
code: 201
17+
duration: 0ms
18+
headers:
19+
Content-Type:
20+
- application/vnd.api+json
21+
status: 201 Created
22+
- request:
23+
body: |
24+
{"data":{"attributes":{"email":"Test-Update_a_user_s_membership_attributes_on_a_team_with_invalid_role_returns_API_error_response_respons-1770908405@datadoghq.com","title":"user title"},"type":"users"}}
25+
form: {}
26+
headers:
27+
Accept:
28+
- application/json
29+
Content-Type:
30+
- application/json
31+
id: 1
32+
method: POST
33+
url: https://api.datadoghq.com/api/v2/users
34+
response:
35+
body: '{"data":{"type":"users","id":"eed29272-352e-4bf8-ab48-ad007a1f7179","attributes":{"name":null,"handle":"test-update_a_user_s_membership_attributes_on_a_team_with_invalid_role_returns_api_error_response_respons-1770908405@datadoghq.com","created_at":"2026-02-12T15:00:06.429855+00:00","modified_at":"2026-02-12T15:00:06.429855+00:00","email":"test-update_a_user_s_membership_attributes_on_a_team_with_invalid_role_returns_api_error_response_respons-1770908405@datadoghq.com","icon":"https://secure.gravatar.com/avatar/1a5d1f711a7790783032ea8e4653d473?s=48&d=retro","title":"user
36+
title","verified":false,"service_account":false,"disabled":false,"allowed_login_methods":[],"status":"Pending","last_login_time":null},"relationships":{"roles":{"data":[]},"org":{"data":{"type":"orgs","id":"4dee724d-00cc-11ea-a77b-570c9d03c6c5"}}}}}
37+
38+
'
39+
code: 201
40+
duration: 0ms
41+
headers:
42+
Content-Type:
43+
- application/json
44+
status: 201 Created
45+
- request:
46+
body: |
47+
{"data":{"attributes":{"role":"admin"},"relationships":{"user":{"data":{"id":"eed29272-352e-4bf8-ab48-ad007a1f7179","type":"users"}}},"type":"team_memberships"}}
48+
form: {}
49+
headers:
50+
Accept:
51+
- application/json
52+
Content-Type:
53+
- application/json
54+
id: 2
55+
method: POST
56+
url: https://api.datadoghq.com/api/v2/team/9c2a3be7-8a43-4f37-bc3d-88248875f867/memberships
57+
response:
58+
body: '{"data":{"id":"TeamMembership-9c2a3be7-8a43-4f37-bc3d-88248875f867-65393607","type":"team_memberships","attributes":{"provisioned_by":null,"provisioned_by_id":"3ad549bf-eba0-11e9-a77a-0705486660d0","role":"admin"},"relationships":{"user":{"data":{"id":"eed29272-352e-4bf8-ab48-ad007a1f7179","type":"users"}}}},"included":[{"id":"eed29272-352e-4bf8-ab48-ad007a1f7179","type":"users","attributes":{"disabled":false,"email":"test-update_a_user_s_membership_attributes_on_a_team_with_invalid_role_returns_api_error_response_respons-1770908405@datadoghq.com","handle":"test-update_a_user_s_membership_attributes_on_a_team_with_invalid_role_returns_api_error_response_respons-1770908405@datadoghq.com","icon":"https://secure.gravatar.com/avatar/1a5d1f711a7790783032ea8e4653d473?d=retro\u0026s=48","name":null,"service_account":false,"status":"Pending"}}]}'
59+
code: 200
60+
duration: 0ms
61+
headers:
62+
Content-Type:
63+
- application/vnd.api+json
64+
status: 200 OK
65+
- request:
66+
body: |
67+
{"data":{"attributes":{"role":"member"},"type":"team_memberships"}}
68+
form: {}
69+
headers:
70+
Accept:
71+
- application/json
72+
Content-Type:
73+
- application/json
74+
id: 3
75+
method: PATCH
76+
url: https://api.datadoghq.com/api/v2/team/9c2a3be7-8a43-4f37-bc3d-88248875f867/memberships/eed29272-352e-4bf8-ab48-ad007a1f7179
77+
response:
78+
body: '{"errors":["{''errors'': [{''detail'': ''Not a valid choice.'', ''source'':
79+
{''pointer'': ''/data/attributes/role''}}]}"]}'
80+
code: 400
81+
duration: 0ms
82+
headers:
83+
Content-Type:
84+
- application/json
85+
status: 400 Bad Request
86+
- request:
87+
body: ''
88+
form: {}
89+
headers:
90+
Accept:
91+
- '*/*'
92+
id: 4
93+
method: DELETE
94+
url: https://api.datadoghq.com/api/v2/team/9c2a3be7-8a43-4f37-bc3d-88248875f867/memberships/eed29272-352e-4bf8-ab48-ad007a1f7179
95+
response:
96+
body: ''
97+
code: 204
98+
duration: 0ms
99+
headers: {}
100+
status: 204 No Content
101+
- request:
102+
body: ''
103+
form: {}
104+
headers:
105+
Accept:
106+
- '*/*'
107+
id: 5
108+
method: DELETE
109+
url: https://api.datadoghq.com/api/v2/users/eed29272-352e-4bf8-ab48-ad007a1f7179
110+
response:
111+
body: ''
112+
code: 204
113+
duration: 0ms
114+
headers: {}
115+
status: 204 No Content
116+
- request:
117+
body: ''
118+
form: {}
119+
headers:
120+
Accept:
121+
- '*/*'
122+
id: 6
123+
method: DELETE
124+
url: https://api.datadoghq.com/api/v2/team/9c2a3be7-8a43-4f37-bc3d-88248875f867
125+
response:
126+
body: ''
127+
code: 204
128+
duration: 0ms
129+
headers: {}
130+
status: 204 No Content
131+
version: 2

tests/scenarios/features/v2/given.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1344,6 +1344,10 @@
13441344
},
13451345
{
13461346
"parameters": [
1347+
{
1348+
"name": "team_id",
1349+
"source": "dd_team.data.id"
1350+
},
13471351
{
13481352
"name": "body",
13491353
"value": "{\n \"data\": {\n \"attributes\": {\n \"role\": \"admin\"\n },\n \"relationships\": {\n \"user\": {\n \"data\": {\n \"id\": \"{{user.data.id}}\",\n \"type\": \"users\"\n }\n }\n },\n \"type\": \"team_memberships\"\n }\n}"

0 commit comments

Comments
 (0)