-
Notifications
You must be signed in to change notification settings - Fork 0
/
teams.ts
65 lines (58 loc) · 2.58 KB
/
teams.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import DatanestClient, { UUID } from "./index";
import { User } from "./users";
export type TeamUser = User & {
custom_role_id: number | null;
};
/**
* Get team members, external users and manager of a project
* @param client Datanest REST API Client
* @param projectUuid UUID of the project
* @throws DatanestResponseError Request HTTP server or validation error
* @returns
*/
export async function getProjectTeam(client: DatanestClient, projectUuid: UUID) {
const response = await client.get('v1/projects/' + projectUuid + '/teams');
const data = await response.json();
return data as {
project_manager: User,
members: TeamUser[],
external_users: TeamUser[],
workflow_assignments: {
workflow_id: number,
workflow_title: string,
workflow_apps: {
workflow_app_id: number;
workflow_group_id: number;
group_title: string,
users: {
uuid: UUID,
name: string,
email: string,
}[],
}[],
} | null,
}
}
export async function addProjectTeamMember(client: DatanestClient, projectUuid: UUID, userUuid: UUID, customRoleId?: number | null): Promise<User> {
const response = await client.post('v1/projects/' + projectUuid + '/teams/members/' + userUuid, {
custom_role_id: customRoleId,
});
const data = await response.json();
return data.user;
}
export async function removeProjectTeamMember(client: DatanestClient, projectUuid: UUID, userUuid: UUID): Promise<User> {
const response = await client.delete('v1/projects/' + projectUuid + '/teams/members/' + userUuid);
const data = await response.json();
return data.user;
}
export async function addExternalUserToProject(client: DatanestClient, projectUuid: UUID, userData: { email: string, name?: string | null, custom_role_id?: number | null }): Promise<User> {
const response = await client.post('v1/projects/' + projectUuid + '/teams/external-users', userData);
const data = await response.json();
return data.user;
}
export async function removeExternalUserToProject(client: DatanestClient, projectUuid: UUID, userUuidOrEmail: UUID | string): Promise<User> {
const response = await client.delete('v1/projects/' + projectUuid + '/teams/external-users/' + userUuidOrEmail);
const data = await response.json();
return data.user;
}
export { assignProjectWorkflowAppUser as assignProjectWorkflowUser, unassignProjectWorkflowAppUser as unassignProjectWorkflowUser } from './workflows';