@@ -2,7 +2,6 @@ package teams
22
33import (
44 "context"
5- "strings"
65
76 otypes "github.com/deepmap/oapi-codegen/pkg/types"
87 "github.com/google/uuid"
@@ -79,7 +78,7 @@ func (r *teamResource) Schema(_ context.Context, _ resource.SchemaRequest, resp
7978 Computed : true ,
8079 ElementType : types .StringType ,
8180 Default : listdefault .StaticValue (emptyList ),
82- MarkdownDescription : "List of user UUIDs that are members of this team." ,
81+ MarkdownDescription : "List of user emails that are members of this team." ,
8382 },
8483 "member_teams" : schema.ListAttribute {
8584 Optional : true ,
@@ -106,7 +105,7 @@ func (r *teamResource) Create(ctx context.Context, req resource.CreateRequest, r
106105 }
107106
108107 teamCreateResponse , err := r .PostV1TeamsWithResponse (ctx , management.PostV1TeamsJSONRequestBody {
109- Name : plan .Name . String ( ),
108+ Name : util . ToString ( plan .Name ),
110109 Description : util .MaybeString (plan .Description ),
111110 })
112111
@@ -121,15 +120,19 @@ func (r *teamResource) Create(ctx context.Context, req resource.CreateRequest, r
121120
122121 id := teamCreateResponse .JSON200 .TeamID
123122
124- userIDs , err := util .ParseUUIDList (plan .MemberUsers )
125- if err != nil {
126- resp .Diagnostics .AddAttributeError (
127- path .Root ("member_users" ),
128- "Invalid user ID" ,
129- err .Error (),
130- )
123+ memberEmails := make ([]string , len (plan .MemberUsers ))
124+ for i , m := range plan .MemberUsers {
125+ // Validate email format
126+ if ! util .IsValidEmail (m .ValueString ()) {
127+ resp .Diagnostics .AddAttributeError (
128+ path .Root ("member_users" ),
129+ "Invalid email format" ,
130+ "The email address '" + m .ValueString ()+ "' is not a valid email format." ,
131+ )
131132
132- return
133+ return
134+ }
135+ memberEmails [i ] = m .ValueString ()
133136 }
134137
135138 teamIDs , err := util .ParseUUIDList (plan .MemberTeams )
@@ -143,12 +146,12 @@ func (r *teamResource) Create(ctx context.Context, req resource.CreateRequest, r
143146 return
144147 }
145148
146- if userIDs != nil || teamIDs != nil {
149+ if len ( memberEmails ) > 0 || teamIDs != nil {
147150 teamPatchResponse , err := r .PatchV1TeamsTeamIDWithResponse (ctx ,
148151 id ,
149152 management.PatchV1TeamsTeamIDJSONRequestBody {
150- AddMemberUserIDs : userIDs ,
151- AddMemberTeamIDs : teamIDs ,
153+ AddMemberUserEmails : & memberEmails ,
154+ AddMemberTeamIDs : teamIDs ,
152155 },
153156 )
154157
@@ -346,22 +349,22 @@ func (r *teamResource) ImportState(ctx context.Context, req resource.ImportState
346349func toTeamResourceModel (team management.Team ) TeamResourceModel {
347350 return TeamResourceModel {
348351 ID : util .UUIDStringValue (team .TeamID ),
349- Name : types .StringValue (strings . ReplaceAll ( team .Name , " \" " , "" ) ),
352+ Name : types .StringValue (team .Name ),
350353 Description : types .StringValue (team .Description ),
351354 CreatedAt : util .MaybeStringValue (team .CreatedAt ),
352- MemberUsers : toUsersUUIDList (team .MemberUsers ),
355+ MemberUsers : toUsersEmailList (team .MemberUsers ),
353356 MemberTeams : toTeamsUUIDList (team .MemberTeams ),
354357 }
355358}
356359
357- func toUsersUUIDList (userList * []management.UserInfo ) []types.String {
360+ func toUsersEmailList (userList * []management.UserInfo ) []types.String {
358361 if userList == nil {
359362 return []types.String {}
360363 }
361364
362365 users := make ([]types.String , len (* userList ))
363366 for i , user := range * userList {
364- users [i ] = util . UUIDStringValue (user .UserID )
367+ users [i ] = types . StringValue (user .Email )
365368 }
366369
367370 return users
0 commit comments