1
0
Fork 0
mirror of synced 2024-07-16 03:46:02 +12:00
appwrite/app/sdks/server-nodejs/lib/services/teams.js
2020-04-30 22:16:14 +03:00

202 lines
6 KiB
JavaScript

const Service = require('../service.js');
class Teams extends Service {
/**
* List Teams
*
* 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).
*
* @param string search
* @param number limit
* @param number offset
* @param string orderType
* @throws Exception
* @return {}
*/
async list(search = '', limit = 25, offset = 0, orderType = 'ASC') {
let path = '/teams';
return await this.client.call('get', path, {
'content-type': 'application/json',
},
{
'search': search,
'limit': limit,
'offset': offset,
'orderType': orderType
});
}
/**
* Create Team
*
* 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.
*
* @param string name
* @param string[] roles
* @throws Exception
* @return {}
*/
async create(name, roles = ["owner"]) {
let path = '/teams';
return await this.client.call('post', path, {
'content-type': 'application/json',
},
{
'name': name,
'roles': roles
});
}
/**
* Get Team
*
* Get team by its unique ID. All team members have read access for this
* resource.
*
* @param string teamId
* @throws Exception
* @return {}
*/
async get(teamId) {
let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId);
return await this.client.call('get', path, {
'content-type': 'application/json',
},
{
});
}
/**
* Update Team
*
* Update team by its unique ID. Only team owners have write access for this
* resource.
*
* @param string teamId
* @param string name
* @throws Exception
* @return {}
*/
async update(teamId, name) {
let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId);
return await this.client.call('put', path, {
'content-type': 'application/json',
},
{
'name': name
});
}
/**
* Delete Team
*
* Delete team by its unique ID. Only team owners have write access for this
* resource.
*
* @param string teamId
* @throws Exception
* @return {}
*/
async delete(teamId) {
let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId);
return await this.client.call('delete', path, {
'content-type': 'application/json',
},
{
});
}
/**
* Get Team Memberships
*
* Get team members by the team unique ID. All team members have read access
* for this list of resources.
*
* @param string teamId
* @throws Exception
* @return {}
*/
async getMemberships(teamId) {
let path = '/teams/{teamId}/memberships'.replace(new RegExp('{teamId}', 'g'), teamId);
return await this.client.call('get', path, {
'content-type': 'application/json',
},
{
});
}
/**
* Create Team Membership
*
* 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.
*
* @param string teamId
* @param string email
* @param string[] roles
* @param string url
* @param string name
* @throws Exception
* @return {}
*/
async createMembership(teamId, email, roles, url, name = '') {
let path = '/teams/{teamId}/memberships'.replace(new RegExp('{teamId}', 'g'), teamId);
return await this.client.call('post', path, {
'content-type': 'application/json',
},
{
'email': email,
'name': name,
'roles': roles,
'url': url
});
}
/**
* Delete Team Membership
*
* 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.
*
* @param string teamId
* @param string inviteId
* @throws Exception
* @return {}
*/
async deleteMembership(teamId, inviteId) {
let path = '/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId);
return await this.client.call('delete', path, {
'content-type': 'application/json',
},
{
});
}
}
module.exports = Teams;