140 lines
4.4 KiB
Go
140 lines
4.4 KiB
Go
package appwrite
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
// Teams service
|
|
type Teams struct {
|
|
client Client
|
|
}
|
|
|
|
func NewTeams(clt Client) Teams {
|
|
service := Teams{
|
|
client: clt,
|
|
}
|
|
|
|
return service
|
|
}
|
|
|
|
// List get a list of all the current user teams. You can use the query params
|
|
// to filter your results. On admin mode, this endpoint will return a list of
|
|
// all of the project teams. [Learn more about different API
|
|
// modes](/docs/admin).
|
|
func (srv *Teams) List(Search string, Limit int, Offset int, OrderType string) (map[string]interface{}, error) {
|
|
path := "/teams"
|
|
|
|
params := map[string]interface{}{
|
|
"search": Search,
|
|
"limit": Limit,
|
|
"offset": Offset,
|
|
"orderType": OrderType,
|
|
}
|
|
|
|
return srv.client.Call("GET", path, nil, params)
|
|
}
|
|
|
|
// Create create a new team. The user who creates the team will automatically
|
|
// be assigned as the owner of the team. The team owner can invite new
|
|
// members, who will be able add new owners and update or delete the team from
|
|
// your project.
|
|
func (srv *Teams) Create(Name string, Roles []interface{}) (map[string]interface{}, error) {
|
|
path := "/teams"
|
|
|
|
params := map[string]interface{}{
|
|
"name": Name,
|
|
"roles": Roles,
|
|
}
|
|
|
|
return srv.client.Call("POST", path, nil, params)
|
|
}
|
|
|
|
// Get get team by its unique ID. All team members have read access for this
|
|
// resource.
|
|
func (srv *Teams) Get(TeamId string) (map[string]interface{}, error) {
|
|
r := strings.NewReplacer("{teamId}", TeamId)
|
|
path := r.Replace("/teams/{teamId}")
|
|
|
|
params := map[string]interface{}{
|
|
}
|
|
|
|
return srv.client.Call("GET", path, nil, params)
|
|
}
|
|
|
|
// Update update team by its unique ID. Only team owners have write access for
|
|
// this resource.
|
|
func (srv *Teams) Update(TeamId string, Name string) (map[string]interface{}, error) {
|
|
r := strings.NewReplacer("{teamId}", TeamId)
|
|
path := r.Replace("/teams/{teamId}")
|
|
|
|
params := map[string]interface{}{
|
|
"name": Name,
|
|
}
|
|
|
|
return srv.client.Call("PUT", path, nil, params)
|
|
}
|
|
|
|
// Delete delete team by its unique ID. Only team owners have write access for
|
|
// this resource.
|
|
func (srv *Teams) Delete(TeamId string) (map[string]interface{}, error) {
|
|
r := strings.NewReplacer("{teamId}", TeamId)
|
|
path := r.Replace("/teams/{teamId}")
|
|
|
|
params := map[string]interface{}{
|
|
}
|
|
|
|
return srv.client.Call("DELETE", path, nil, params)
|
|
}
|
|
|
|
// GetMemberships get team members by the team unique ID. All team members
|
|
// have read access for this list of resources.
|
|
func (srv *Teams) GetMemberships(TeamId string) (map[string]interface{}, error) {
|
|
r := strings.NewReplacer("{teamId}", TeamId)
|
|
path := r.Replace("/teams/{teamId}/memberships")
|
|
|
|
params := map[string]interface{}{
|
|
}
|
|
|
|
return srv.client.Call("GET", path, nil, params)
|
|
}
|
|
|
|
// CreateMembership use this endpoint to invite a new member to join your
|
|
// team. An email with a link to join the team will be sent to the new member
|
|
// email address if the member doesn't exist in the project it will be created
|
|
// automatically.
|
|
//
|
|
// Use the 'URL' parameter to redirect the user from the invitation email back
|
|
// to your app. When the user is redirected, use the [Update Team Membership
|
|
// Status](/docs/teams#updateMembershipStatus) endpoint to allow the user to
|
|
// accept the invitation to the team.
|
|
//
|
|
// Please note that in order to avoid a [Redirect
|
|
// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md)
|
|
// the only valid redirect URL's are the once from domains you have set when
|
|
// added your platforms in the console interface.
|
|
func (srv *Teams) CreateMembership(TeamId string, Email string, Roles []interface{}, Url string, Name string) (map[string]interface{}, error) {
|
|
r := strings.NewReplacer("{teamId}", TeamId)
|
|
path := r.Replace("/teams/{teamId}/memberships")
|
|
|
|
params := map[string]interface{}{
|
|
"email": Email,
|
|
"name": Name,
|
|
"roles": Roles,
|
|
"url": Url,
|
|
}
|
|
|
|
return srv.client.Call("POST", path, nil, params)
|
|
}
|
|
|
|
// DeleteMembership this endpoint allows a user to leave a team or for a team
|
|
// owner to delete the membership of any other team member. You can also use
|
|
// this endpoint to delete a user membership even if he didn't accept it.
|
|
func (srv *Teams) DeleteMembership(TeamId string, InviteId string) (map[string]interface{}, error) {
|
|
r := strings.NewReplacer("{teamId}", TeamId, "{inviteId}", InviteId)
|
|
path := r.Replace("/teams/{teamId}/memberships/{inviteId}")
|
|
|
|
params := map[string]interface{}{
|
|
}
|
|
|
|
return srv.client.Call("DELETE", path, nil, params)
|
|
}
|