@@ -12,10 +12,12 @@ import (
1212)
1313
1414const (
15- endpointTeamNew = "/team/new"
16- endpointTeamInfo = "/team/info"
17- endpointTeamUpdate = "/team/update"
18- endpointTeamDelete = "/team/delete"
15+ endpointTeamNew = "/team/new"
16+ endpointTeamInfo = "/team/info"
17+ endpointTeamUpdate = "/team/update"
18+ endpointTeamDelete = "/team/delete"
19+ endpointTeamPermissionsList = "/team/permissions_list"
20+ endpointTeamPermissionsUpdate = "/team/permissions_update"
1921)
2022
2123func ResourceLiteLLMTeam () * schema.Resource {
@@ -64,6 +66,12 @@ func ResourceLiteLLMTeam() *schema.Resource {
6466 Type : schema .TypeBool ,
6567 Optional : true ,
6668 },
69+ "team_member_permissions" : {
70+ Type : schema .TypeList ,
71+ Optional : true ,
72+ Elem : & schema.Schema {Type : schema .TypeString },
73+ Description : "List of permissions granted to team members" ,
74+ },
6775 },
6876 }
6977}
@@ -139,6 +147,13 @@ func resourceLiteLLMTeamRead(d *schema.ResourceData, m interface{}) error {
139147
140148 d .Set ("blocked" , GetBoolValue (teamResp .Blocked , d .Get ("blocked" ).(bool )))
141149
150+ // Handle team_member_permissions separately as it's a list
151+ if teamResp .TeamMemberPermissions != nil {
152+ d .Set ("team_member_permissions" , teamResp .TeamMemberPermissions )
153+ } else {
154+ d .Set ("team_member_permissions" , d .Get ("team_member_permissions" ))
155+ }
156+
142157 log .Printf ("[INFO] Successfully read team with ID: %s" , d .Id ())
143158 return nil
144159}
@@ -193,7 +208,7 @@ func buildTeamData(d *schema.ResourceData, teamID string) map[string]interface{}
193208 "team_alias" : d .Get ("team_alias" ).(string ),
194209 }
195210
196- for _ , key := range []string {"organization_id" , "metadata" , "tpm_limit" , "rpm_limit" , "max_budget" , "budget_duration" , "models" , "blocked" } {
211+ for _ , key := range []string {"organization_id" , "metadata" , "tpm_limit" , "rpm_limit" , "max_budget" , "budget_duration" , "models" , "blocked" , "team_member_permissions" } {
197212 if v , ok := d .GetOk (key ); ok {
198213 teamData [key ] = v
199214 }
@@ -209,3 +224,56 @@ func handleResponse(resp *http.Response, action string) error {
209224 }
210225 return nil
211226}
227+
228+ // TeamPermissionsResponse represents a response from the API containing team permissions information.
229+ type TeamPermissionsResponse struct {
230+ TeamID string `json:"team_id"`
231+ TeamMemberPermissions []string `json:"team_member_permissions"`
232+ AllAvailablePermissions []string `json:"all_available_permissions"`
233+ }
234+
235+ // getTeamPermissions retrieves the current permissions and available permissions for a team.
236+ func getTeamPermissions (client * Client , teamID string ) (* TeamPermissionsResponse , error ) {
237+ log .Printf ("[INFO] Getting permissions for team with ID: %s" , teamID )
238+
239+ resp , err := MakeRequest (client , "GET" , fmt .Sprintf ("%s?team_id=%s" , endpointTeamPermissionsList , teamID ), nil )
240+ if err != nil {
241+ return nil , fmt .Errorf ("error getting team permissions: %w" , err )
242+ }
243+ defer resp .Body .Close ()
244+
245+ if resp .StatusCode != http .StatusOK {
246+ body , _ := ioutil .ReadAll (resp .Body )
247+ return nil , fmt .Errorf ("error getting team permissions: %s - %s" , resp .Status , string (body ))
248+ }
249+
250+ var permResp TeamPermissionsResponse
251+ if err := json .NewDecoder (resp .Body ).Decode (& permResp ); err != nil {
252+ return nil , fmt .Errorf ("error decoding team permissions response: %w" , err )
253+ }
254+
255+ return & permResp , nil
256+ }
257+
258+ // updateTeamPermissions updates the permissions for a team.
259+ func updateTeamPermissions (client * Client , teamID string , permissions []string ) error {
260+ log .Printf ("[INFO] Updating permissions for team with ID: %s" , teamID )
261+
262+ permData := map [string ]interface {}{
263+ "team_id" : teamID ,
264+ "team_member_permissions" : permissions ,
265+ }
266+
267+ resp , err := MakeRequest (client , "POST" , endpointTeamPermissionsUpdate , permData )
268+ if err != nil {
269+ return fmt .Errorf ("error updating team permissions: %w" , err )
270+ }
271+ defer resp .Body .Close ()
272+
273+ if err := handleResponse (resp , "updating team permissions" ); err != nil {
274+ return err
275+ }
276+
277+ log .Printf ("[INFO] Successfully updated permissions for team with ID: %s" , teamID )
278+ return nil
279+ }
0 commit comments