github.com/aiven/aiven-go-client@v1.36.0/account_team_members.go (about)

     1  package aiven
     2  
     3  import (
     4  	"errors"
     5  	"time"
     6  )
     7  
     8  type (
     9  	// AccountTeamMembersHandler Aiven go-client handler for Account Team Members
    10  	AccountTeamMembersHandler struct {
    11  		client *Client
    12  	}
    13  
    14  	// AccountTeamMember represents an account team member
    15  	AccountTeamMember struct {
    16  		UserId     string     `json:"user_id,omitempty"`
    17  		RealName   string     `json:"real_name,omitempty"`
    18  		TeamId     string     `json:"team_id,omitempty"`
    19  		TeamName   string     `json:"team_name,omitempty"`
    20  		UserEmail  string     `json:"user_email,omitempty"`
    21  		CreateTime *time.Time `json:"create_time,omitempty"`
    22  		UpdateTime *time.Time `json:"update_time,omitempty"`
    23  	}
    24  
    25  	// AccountTeamMembersResponse represents account team members API response
    26  	AccountTeamMembersResponse struct {
    27  		APIResponse
    28  		Members []AccountTeamMember `json:"members"`
    29  	}
    30  
    31  	// AccountTeamMemberResponse represents a account team member API response
    32  	AccountTeamMemberResponse struct {
    33  		APIResponse
    34  		Member AccountTeamMember `json:"member"`
    35  	}
    36  )
    37  
    38  // List returns a list of all existing account team members
    39  func (h AccountTeamMembersHandler) List(accountId, teamId string) (*AccountTeamMembersResponse, error) {
    40  	if accountId == "" || teamId == "" {
    41  		return nil, errors.New("cannot get a list of team members when account id or team id is empty")
    42  	}
    43  
    44  	path := buildPath("account", accountId, "team", teamId, "members")
    45  	bts, err := h.client.doGetRequest(path, nil)
    46  	if err != nil {
    47  		return nil, err
    48  	}
    49  
    50  	var rsp AccountTeamMembersResponse
    51  	if errR := checkAPIResponse(bts, &rsp); errR != nil {
    52  		return nil, errR
    53  	}
    54  	return &rsp, nil
    55  }
    56  
    57  // Invite invites a team member
    58  func (h AccountTeamMembersHandler) Invite(accountId, teamId, email string) error {
    59  	if accountId == "" || teamId == "" {
    60  		return errors.New("cannot invite a team members when account id or team id is empty")
    61  	}
    62  
    63  	if email == "" {
    64  		return errors.New("cannot invite a team members when email is empty")
    65  	}
    66  
    67  	path := buildPath("account", accountId, "team", teamId, "members")
    68  	bts, err := h.client.doPostRequest(path, struct {
    69  		Email string `json:"email"`
    70  	}{Email: email})
    71  	if err != nil {
    72  		return err
    73  	}
    74  
    75  	return checkAPIResponse(bts, nil)
    76  }
    77  
    78  // Delete deletes an existing account team member
    79  func (h AccountTeamMembersHandler) Delete(accountId, teamId, userId string) error {
    80  	if accountId == "" || teamId == "" || userId == "" {
    81  		return errors.New("cannot delete a team member when account id or team id or user id is empty")
    82  	}
    83  
    84  	path := buildPath("account", accountId, "team", teamId, "member", userId)
    85  	bts, err := h.client.doDeleteRequest(path, nil)
    86  	if err != nil {
    87  		return err
    88  	}
    89  
    90  	return checkAPIResponse(bts, nil)
    91  }