@crowdin/crowdin-api-client
Version:
JavaScript library for Crowdin API
259 lines (258 loc) • 10.2 kB
TypeScript
import { CrowdinApi, Pagination, PaginationOptions, PatchRequest, ProjectRole, ProjectRoles, ResponseList, ResponseObject } from '../core';
import { ProjectsGroupsModel } from '../projectsGroups';
import { TeamsModel } from '../teams';
/**
* Users API gives you the possibility to get profile information about the currently authenticated user.
*
* In Crowdin Enterprise users are the members of your organization with the defined access levels.
* Use API to get the list of organization users and to check the information on a specific user.
*/
export declare class Users extends CrowdinApi {
/**
* @param projectId project identifier
* @param options optional parameters for the request
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.members.getMany
*/
listProjectMembers(projectId: number, options?: UsersModel.ListProjectMembersOptions): Promise<ResponseList<UsersModel.ProjectMember | UsersModel.EnterpriseProjectMember>>;
/**
* @param projectId project identifier
* @param search search users by firstName, lastName or username
* @param role defines role type
* @param languageId language identifier
* @param limit maximum number of items to retrieve (default 25)
* @param offset starting offset in the collection (default 0)
* @deprecated optional parameters should be passed through an object
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.members.getMany
*/
listProjectMembers(projectId: number, search?: string, role?: UsersModel.Role, languageId?: string, limit?: number, offset?: number): Promise<ResponseList<UsersModel.ProjectMember | UsersModel.EnterpriseProjectMember>>;
/**
* @param projectId project identifier
* @param request request body
* @see https://support.crowdin.com/enterprise/api/#operation/api.projects.members.post
*/
addProjectMember(projectId: number, request: UsersModel.AddProjectMemberRequest): Promise<UsersModel.AddProjectMemberResponse>;
/**
* @param projectId project identifier
* @param memberId member identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.members.get
*/
getProjectMemberPermissions(projectId: number, memberId: number): Promise<ResponseObject<UsersModel.ProjectMember | UsersModel.EnterpriseProjectMember>>;
/**
* @param projectId project identifier
* @param memberId member identifier
* @see https://support.crowdin.com/enterprise/api/#operation/api.projects.members.put
*/
replaceProjectMemberPermissions(projectId: number, memberId: number, request?: UsersModel.ReplaceProjectMemberRequest): Promise<ResponseObject<UsersModel.ProjectMember | UsersModel.EnterpriseProjectMember>>;
/**
* @param projectId project identifier
* @param memberId member identifier
* @see https://support.crowdin.com/enterprise/api/#operation/api.projects.members.delete
*/
deleteMemberFromProject(projectId: number, memberId: number): Promise<void>;
/**
* @param options optional parameters for the request
* @see https://support.crowdin.com/enterprise/api/#operation/api.users.getMany
*/
listUsers(options?: UsersModel.ListUsersOptions): Promise<ResponseList<UsersModel.User>>;
/**
* @param status filter users by status
* @param search search users by firstName, lastName, username, email
* @param twoFactor filter users by two-factor authentication status
* @param limit maximum number of items to retrieve (default 25)
* @param offset starting offset in the collection (default 0)
* @deprecated optional parameters should be passed through an object
* @see https://support.crowdin.com/enterprise/api/#operation/api.users.getMany
*/
listUsers(status?: UsersModel.Status, search?: string, twoFactor?: UsersModel.TwoFactor, limit?: number, offset?: number): Promise<ResponseList<UsersModel.User>>;
/**
* @param request request body
* @see https://support.crowdin.com/enterprise/api/#operation/api.users.post
*/
inviteUser(request: UsersModel.InviteUserRequest): Promise<ResponseObject<UsersModel.User>>;
/**
* @param userId user identifier
* @see https://support.crowdin.com/enterprise/api/#operation/api.users.getById
*/
getUserInfo(userId: number): Promise<ResponseObject<UsersModel.User>>;
/**
* @param userId user identifier
* @see https://support.crowdin.com/enterprise/api/#operation/api.users.delete
*/
deleteUser(userId: number): Promise<void>;
/**
* @param userId user identifier
* @param request request body
* @see https://support.crowdin.com/enterprise/api/#operation/api.users.patch
*/
editUser(userId: number, request: PatchRequest[]): Promise<ResponseObject<UsersModel.User>>;
/**
* @see https://developer.crowdin.com/api/v2/#operation/api.user.get
*/
getAuthenticatedUser(): Promise<ResponseObject<UsersModel.User>>;
/**
* @param request request body
* @see https://developer.crowdin.com/api/v2/#operation/api.user.patch
*/
editAuthenticatedUser(request: PatchRequest[]): Promise<ResponseObject<UsersModel.User>>;
/**
* @param userId user identifier
* @param options request options
* @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.users.projects.permissions.getMany
*/
listUserProjectPermissions(userId: number, options?: PaginationOptions): Promise<ResponseList<UsersModel.ProjectPermissions>>;
/**
* @param userId user identifier
* @param request request body
* @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.users.projects.permissions.patch
*/
editUserProjectPermissions(userId: number, request: PatchRequest[]): Promise<ResponseList<UsersModel.ProjectPermissions>>;
/**
* @param userId user identifier
* @param options request options
* @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.users.projects.contributions.getMany
*/
listUserProjectContributions(userId: number, options?: PaginationOptions): Promise<ResponseList<UsersModel.ProjectPermissions>>;
}
export declare namespace UsersModel {
interface ListProjectMembersOptions extends PaginationOptions {
search?: string;
role?: Role;
languageId?: string;
workflowStepId?: number;
orderBy?: string;
}
interface ListUsersOptions extends PaginationOptions {
status?: Status;
search?: string;
twoFactor?: TwoFactor;
orderBy?: string;
organizationRoles?: OrganizationRoles[];
teamId?: number;
projectIds?: string;
projectRoles?: ProjectRoles[];
languageIds?: string;
groupIds?: string;
lastSeenFrom?: string;
lastSeenTo?: string;
}
interface InviteUserRequest {
email: string;
firstName?: string;
lastName?: string;
timezone?: string;
adminAccess?: boolean;
}
interface User {
id: number;
username: string;
email: string;
firstName: string;
lastName: string;
status: Status;
avatarUrl: string;
createdAt: string;
lastSeen: string;
twoFactor: string;
isAdmin: boolean;
timezone: string;
}
type Status = 'active' | 'pending' | 'blocked';
type TwoFactor = 'enabled' | 'disabled';
type OrganizationRoles = 'admin' | 'manager' | 'vendor' | 'client';
interface ProjectMember {
id: number;
username: string;
fullName: string;
role: Role;
/**
* @deprecated
*/
permissions: Permissions;
avatarUrl: string;
joinedAt: string;
timezone: string;
roles: ProjectRole[];
}
interface EnterpriseProjectMember {
id: number;
username: string;
firstName: string;
lastName: string;
isManager: boolean;
isDeveloperr: boolean;
managerOfGroup: Group;
/**
* @deprecated
*/
accessToAllWorkflowSteps: boolean;
/**
* @deprecated
*/
permissions: Permissions;
givenAccessAt: string;
roles: ProjectRole[];
}
interface Group {
id: number;
name: string;
}
type Role = 'all' | 'owner' | 'manager' | 'proofreader' | 'translator' | 'blocked';
type LanguageRole = 'proofreader' | 'translator' | 'denied';
interface AddProjectMemberRequest {
userIds?: number[];
usernames?: string[];
emails?: string[];
managerAccess?: boolean;
roles?: ProjectRole[];
developerAccess?: boolean;
/**
* @deprecated
*/
accessToAllWorkflowSteps?: boolean;
/**
* @deprecated
*/
permissions?: Permissions;
}
interface AddProjectMemberResponse {
skipped: ResponseObject<ProjectMember | EnterpriseProjectMember>[];
added: ResponseObject<ProjectMember | EnterpriseProjectMember>[];
pagination: Pagination;
}
interface ReplaceProjectMemberRequest {
managerAccess?: boolean;
developerAccess?: boolean;
roles?: ProjectRole[];
/**
* @deprecated
*/
accessToAllWorkflowSteps?: boolean;
/**
* @deprecated
*/
permissions?: Permissions;
}
interface ProjectPermissions {
id: number;
roles: ProjectRole[];
project: ProjectsGroupsModel.Project | ProjectsGroupsModel.ProjectSettings;
teams: TeamsModel.Team[];
}
interface Contributions {
id: number;
translated: Contribution;
approved: Contribution;
voted: Contribution;
commented: Contribution;
project: ProjectsGroupsModel.Project | ProjectsGroupsModel.ProjectSettings;
}
interface Contribution {
strings: number;
words?: number;
}
interface Permissions {
[lang: string]: string | {
workflowStepIds: number[] | 'all';
};
}
}