@crowdin/crowdin-api-client
Version:
JavaScript library for Crowdin API
579 lines (578 loc) • 23.5 kB
TypeScript
import { BooleanInt, CrowdinApi, DownloadLink, PaginationOptions, PatchRequest, ResponseList, ResponseObject } from '../core';
import { LanguagesModel } from '../languages';
/**
* Using projects, you can keep your source files sorted.
*
* Use API to manage projects, change their settings, or remove them if required.
*
* Only Crowdin Enterprise: Groups allow you to organize your projects based on specific characteristics.
* Using projects, you can keep your source files sorted.
*/
export declare class ProjectsGroups extends CrowdinApi {
/**
* @param options optional parameters for the request
* @see https://support.crowdin.com/enterprise/api/#operation/api.groups.getMany
*/
listGroups(options?: ProjectsGroupsModel.ListGroupsOptions): Promise<ResponseList<ProjectsGroupsModel.Group>>;
/**
* @param parentId parent group identifier
* @param offset starting offset in the collection (default 0)
* @param userId get user own projects
* @param limit maximum number of items to retrieve (default 25)
* @deprecated optional parameters should be passed through an object
* @see https://support.crowdin.com/enterprise/api/#operation/api.groups.getMany
*/
listGroups(parentId?: number, offset?: number, userId?: number, limit?: number): Promise<ResponseList<ProjectsGroupsModel.Group>>;
/**
* @param request request body
* @see https://support.crowdin.com/enterprise/api/#operation/api.groups.post
*/
addGroup(request: ProjectsGroupsModel.AddGroupRequest): Promise<ResponseObject<ProjectsGroupsModel.Group>>;
/**
* @param group group identifier
* @see https://support.crowdin.com/enterprise/api/#operation/api.groups.get
*/
getGroup(groupId: number): Promise<ResponseObject<ProjectsGroupsModel.Group>>;
/**
* @param groupId group identifier
* @see https://support.crowdin.com/enterprise/api/#operation/api.groups.delete
*/
deleteGroup(groupId: number): Promise<void>;
/**
* @param groupId group identifier
* @param request request body
* @see https://support.crowdin.com/enterprise/api/#operation/api.groups.patch
*/
editGroup(groupId: number, request: PatchRequest[]): Promise<ResponseObject<ProjectsGroupsModel.Group>>;
/**
* @param options optional parameters for the request
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.getMany
*/
listProjects(options?: ProjectsGroupsModel.ListProjectsOptions): Promise<ResponseList<ProjectsGroupsModel.Project | ProjectsGroupsModel.ProjectSettings>>;
/**
* @param groupId group identifier
* @param hasManagerAccess projects with manager access (default 0)
* @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.getMany
*/
listProjects(groupId?: number, hasManagerAccess?: BooleanInt, limit?: number, offset?: number): Promise<ResponseList<ProjectsGroupsModel.Project | ProjectsGroupsModel.ProjectSettings>>;
/**
* @param request request body
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.post
*/
addProject(request: ProjectsGroupsModel.CreateProjectEnterpriseRequest | ProjectsGroupsModel.CreateProjectRequest): Promise<ResponseObject<ProjectsGroupsModel.Project | ProjectsGroupsModel.ProjectSettings>>;
/**
* @param projectId project identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.get
*/
getProject(projectId: number): Promise<ResponseObject<ProjectsGroupsModel.Project | ProjectsGroupsModel.ProjectSettings>>;
/**
* @param projectId project identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.delete
*/
deleteProject(projectId: number): Promise<void>;
/**
* @param projectId project identifier
* @param request request body
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.patch
*/
editProject(projectId: number, request: PatchRequest[]): Promise<ResponseObject<ProjectsGroupsModel.Project | ProjectsGroupsModel.ProjectSettings>>;
/**
* @param projectId project identifier
* @param fileFormatSettingsId file format settings identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.file-format-settings.custom-segmentations.get
*/
downloadProjectFileFormatSettingsCustomSegmentation(projectId: number, fileFormatSettingsId: number): Promise<ResponseObject<DownloadLink>>;
/**
* @param projectId project identifier
* @param fileFormatSettingsId file format settings identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.file-format-settings.custom-segmentations.delete
*/
resetProjectFileFormatSettingsCustomSegmentation(projectId: number, fileFormatSettingsId: number): Promise<ResponseObject<DownloadLink>>;
/**
* @param projectId project identifier
* @param options optional parameters for the request
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.file-format-settings.getMany
*/
listProjectFileFormatSettings(projectId: number, options?: PaginationOptions): Promise<ResponseList<ProjectsGroupsModel.ProjectFileFormatSettings>>;
/**
* @param projectId project identifier
* @param request request body
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.file-format-settings.post
*/
addProjectFileFormatSettings(projectId: number, request: ProjectsGroupsModel.AddProjectFileFormatSettingsRequest): Promise<ResponseObject<ProjectsGroupsModel.ProjectFileFormatSettings>>;
/**
* @param projectId project identifier
* @param fileFormatSettingsId file format settings identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.file-format-settings.get
*/
getProjectFileFormatSettings(projectId: number, fileFormatSettingsId: number): Promise<ResponseObject<ProjectsGroupsModel.ProjectFileFormatSettings>>;
/**
* @param projectId project identifier
* @param fileFormatSettingsId file format settings identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.file-format-settings.delete
*/
deleteProjectFileFormatSettings(projectId: number, fileFormatSettingsId: number): Promise<void>;
/**
* @param projectId project identifier
* @param fileFormatSettingsId file format settings identifier
* @param request request body
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.file-format-settings.patch
*/
editProjectFileFormatSettings(projectId: number, fileFormatSettingsId: number, request: PatchRequest[]): Promise<ResponseObject<ProjectsGroupsModel.ProjectFileFormatSettings>>;
/**
* @param projectId project identifier
* @param options optional parameters for the request
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.strings-exporter-settings.getMany
*/
listProjectStringsExporterSettings(projectId: number, options?: PaginationOptions): Promise<ResponseList<ProjectsGroupsModel.ProjectStringsExporterSettings>>;
/**
* @param projectId project identifier
* @param request request body
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.strings-exporter-settings.post
*/
addProjectStringsExporterSettings(projectId: number, request: ProjectsGroupsModel.AddProjectStringsExporterSettingsRequest): Promise<ResponseObject<ProjectsGroupsModel.ProjectStringsExporterSettings>>;
/**
* @param projectId project identifier
* @param systemStringsExporterSettingsId file format settings identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.strings-exporter-settings.get
*/
getProjectStringsExporterSettings(projectId: number, systemStringsExporterSettingsId: number): Promise<ResponseObject<ProjectsGroupsModel.ProjectStringsExporterSettings>>;
/**
* @param projectId project identifier
* @param systemStringsExporterSettingsId file format settings identifier
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.strings-exporter-settings.delete
*/
deleteProjectStringsExporterSettings(projectId: number, systemStringsExporterSettingsId: number): Promise<void>;
/**
* @param projectId project identifier
* @param systemStringsExporterSettingsId file format settings identifier
* @param request request body
* @see https://developer.crowdin.com/api/v2/#operation/api.projects.strings-exporter-settings.patch
*/
editProjectStringsExporterSettings(projectId: number, systemStringsExporterSettingsId: number, request: ProjectsGroupsModel.AddProjectStringsExporterSettingsRequest): Promise<ResponseObject<ProjectsGroupsModel.ProjectStringsExporterSettings>>;
}
export declare namespace ProjectsGroupsModel {
interface Group {
id: number;
name: string;
description: string;
parentId: number;
organizationId: number;
userId: number;
subgroupsCount: number;
projectsCount: number;
webUrl: string;
createdAt: string;
updatedAt: string;
}
interface AddGroupRequest {
name: string;
parentId?: number;
description?: string;
}
interface Project {
id: number;
type: Type;
userId: number;
sourceLanguageId: string;
targetLanguageIds: string[];
languageAccessPolicy: LanguageAccessPolicy;
name: string;
identifier: string;
description: string;
visibility: string;
logo: string;
publicDownloads: boolean;
createdAt: string;
updatedAt: string;
lastActivity: string;
sourceLanguage: LanguagesModel.Language;
targetLanguages: LanguagesModel.Language[];
webUrl: string;
savingsReportSettingsTemplateId: number;
cname: string;
groupId: number;
background: string;
isExternal: boolean;
externalType: string;
externalProjectId: number;
externalOrganizationId: number;
workflowId: number;
hasCrowdsourcing: boolean;
publicUrl: string;
}
interface CreateProjectRequest {
name: string;
identifier: string;
sourceLanguageId: string;
targetLanguageIds?: string[];
visibility?: JoinPolicy;
languageAccessPolicy?: LanguageAccessPolicy;
cname?: string;
description?: string;
tagDetection?: TagDetection;
isMtAllowed?: boolean;
taskBasedAccessControl?: boolean;
autoSubstitution?: boolean;
autoTranslateDialects?: boolean;
publicDownloads?: boolean;
hiddenStringsProofreadersAccess?: boolean;
useGlobalTm?: boolean;
showTmSuggestionsDialects?: boolean;
skipUntranslatedStrings?: boolean;
exportApprovedOnly?: boolean;
qaCheckIsActive?: boolean;
qaCheckCategories?: CheckCategories;
qaChecksIgnorableCategories?: CheckCategories;
languageMapping?: LanguageMapping;
/**
* @deprecated
*/
glossaryAccess?: boolean;
glossaryAccessOption?: GlossaryAccessOption;
normalizePlaceholder?: boolean;
notificationSettings?: NotificationSettings;
tmPreTranslate?: ProjectSettings['tmPreTranslate'];
mtPreTranslate?: ProjectSettings['mtPreTranslate'];
aiPreTranslate?: ProjectSettings['aiPreTranslate'];
assistActionAiPromptId?: number;
editorSuggestionAiPromptId?: number;
savingsReportSettingsTemplateId?: number;
defaultTmId?: number;
defaultGlossaryId?: number;
inContext?: boolean;
inContextProcessHiddenStrings?: boolean;
inContextPseudoLanguageId?: string;
saveMetaInfoInSource?: boolean;
type?: BooleanInt;
skipUntranslatedFiles?: boolean;
tmContextType?: TmContextType;
}
interface CreateProjectEnterpriseRequest {
name: string;
sourceLanguageId: string;
templateId?: number;
steps?: WorkflowTemplateStepConfig[];
groupId?: number;
targetLanguageIds?: string[];
vendorId?: number;
mtEngineId?: number;
description?: string;
translateDuplicates?: TranslateDuplicates;
tagsDetection?: TagDetection;
isMtAllowed?: boolean;
taskBasedAccessControl?: boolean;
taskReviewerIds?: number[];
autoSubstitution?: boolean;
showTmSuggestionsDialects?: boolean;
autoTranslateDialects?: boolean;
publicDownloads?: boolean;
hiddenStringsProofreadersAccess?: boolean;
delayedWorkflowStart?: boolean;
skipUntranslatedStrings?: boolean;
exportWithMinApprovalsCount?: number;
exportStringsThatPassedWorkflow?: number;
normalizePlaceholder?: boolean;
qaCheckIsActive?: boolean;
qaApprovalsCount?: number;
qaCheckCategories?: CheckCategories;
qaChecksIgnorableCategories?: CheckCategories;
customQaCheckIds?: number[];
languageMapping?: LanguageMapping;
/**
* @deprecated
*/
glossaryAccess?: boolean;
glossaryAccessOption?: GlossaryAccessOption;
notificationSettings?: NotificationSettings;
savingsReportSettingsTemplateId?: number;
assistActionAiPromptId?: number;
editorSuggestionAiPromptId?: number;
alignmentActionAiPromptId?: number;
defaultTmId?: number;
defaultGlossaryId?: number;
inContext?: boolean;
inContextProcessHiddenStrings?: boolean;
inContextPseudoLanguageId?: string;
saveMetaInfoInSource?: boolean;
type?: BooleanInt;
skipUntranslatedFiles?: boolean;
tmContextType?: TmContextType;
}
type GlossaryAccessOption = 'readOnly' | 'fullAccess' | 'manageDrafts';
interface ProjectSettings extends Project {
translateDuplicates: TranslateDuplicates;
tagsDetection: TagDetection;
glossaryAccess: boolean;
glossaryAccessOption: GlossaryAccessOption;
isMtAllowed: boolean;
taskBasedAccessControl: boolean;
hiddenStringsProofreadersAccess: boolean;
autoSubstitution: boolean;
exportTranslatedOnly: boolean;
skipUntranslatedStrings: boolean;
exportApprovedOnly: boolean;
autoTranslateDialects: boolean;
useGlobalTm: boolean;
showTmSuggestionsDialects: boolean;
isSuspended: boolean;
qaCheckIsActive: boolean;
qaCheckCategories: CheckCategories;
qaChecksIgnorableCategories: CheckCategories;
languageMapping: LanguageMapping;
notificationSettings: NotificationSettings;
defaultTmId: number;
defaultGlossaryId: number;
assignedTms: {
[id: string]: {
priority: number;
};
};
assignedGlossaries: number[];
tmPenalties: {
autoSubstitution: number;
tmPriority: {
priority: number;
penalty: number;
};
multipleTranslations: number;
timeSinceLastUsage: {
months: number;
penalty: number;
};
timeSinceLastModified: {
months: number;
penalty: number;
};
};
normalizePlaceholder: boolean;
tmPreTranslate: {
enabled: boolean;
autoApproveOption: 'all' | 'perfectMatchOnly' | 'exceptAutoSubstituted' | 'perfectMatchApprovedOnly' | 'none';
minimumMatchRatio: 'perfect' | '100';
};
mtPreTranslate: {
enabled: boolean;
mts: {
mtId: number;
languageIds: string[];
}[];
};
aiPreTranslate: {
enabled: boolean;
aiPrompts: {
aiPromptId: number;
languageIds: string[];
}[];
};
assistActionAiPromptId: number;
editorSuggestionAiPromptId: number;
inContext: boolean;
inContextProcessHiddenStrings: string;
inContextPseudoLanguageId: string;
inContextPseudoLanguage: LanguagesModel.Language;
saveMetaInfoInSource: boolean;
skipUntranslatedFiles: boolean;
tmContextType: TmContextType;
clientOrganizationId: number;
taskReviewerIds: number[];
exportWithMinApprovalsCount: number;
exportStringsThatPassedWorkflow: boolean;
qaApprovalsCount: number;
customQaCheckIds: number[];
externalQaCheckIds: number[];
delayedWorkflowStart: boolean;
alignmentActionAiPromptId: number;
}
enum Type {
FILES_BASED = 0,
STRINGS_BASED = 1
}
enum TagDetection {
AUTO = 0,
COUNT_TAGS = 1,
SKIP_TAGS = 2
}
type JoinPolicy = 'open' | 'private';
type LanguageAccessPolicy = 'open' | 'moderate';
interface CheckCategories {
empty: boolean;
size: boolean;
tags: boolean;
spaces: boolean;
variables: boolean;
punctuation: boolean;
symbolRegister: boolean;
specialSymbols: boolean;
wrongTranslation: boolean;
spellcheck: boolean;
icu: boolean;
terms: boolean;
duplicate: boolean;
ftl: boolean;
android: boolean;
}
interface LanguageMapping {
[key: string]: LanguageMappingEntity;
}
interface LanguageMappingEntity {
name: string;
two_letters_code: string;
three_letters_code: string;
locale: string;
locale_with_underscore: string;
android_code: string;
osx_code: string;
osx_locale: string;
}
enum TranslateDuplicates {
SHOW = 0,
HIDE_REGULAR_DETECTION = 1,
SHOW_AUTO_TRANSLATE = 2,
SHOW_WITHIN_VERION_BRANCH_REGULAR_DETECTION = 3,
HIDE_STRICT_DETECTION = 4,
SHOW_WITHIN_VERION_BRANCH_STRICT_DETECTION = 5
}
interface NotificationSettings {
translatorNewStrings?: boolean;
managerNewStrings?: boolean;
managerLanguageCompleted?: boolean;
}
interface ListGroupsOptions extends PaginationOptions {
parentId?: number;
userId?: number;
orderBy?: string;
}
interface ListProjectsOptions extends PaginationOptions {
groupId?: number;
hasManagerAccess?: BooleanInt;
orderBy?: string;
type?: BooleanInt;
}
type Settings = PropertyFileFormatSettings | CommonFileFormatSettings | XmlFileFormatSettings | MdxV2FormatSettings | FmHtmlFormatSettings | HtmlFormatSettings | JsonFormatSettings | MdxV1FormatSettings | JavaScriptFileFormatSettings | DocxFileFormatSettings;
interface ProjectFileFormatSettings {
id: number;
name: string;
format: string;
extensions: string[];
settings: Settings;
createdAt: string;
updatedAt: string;
}
interface AddProjectFileFormatSettingsRequest {
format: string;
settings: Settings;
}
interface PropertyFileFormatSettings {
escapeQuotes?: 0 | 1 | 2 | 3;
escapeSpecialCharacters?: 0 | 1;
exportPattern?: string;
}
interface JavaScriptFileFormatSettings {
exportPattern?: 'string';
exportQuotes?: 'single' | 'double';
}
interface CommonFileFormatSettings {
contentSegmentation?: boolean;
srxStorageId?: number;
exportPattern?: string;
}
interface XmlFileFormatSettings extends CommonFileFormatSettings {
translateContent?: boolean;
translateAttributes?: boolean;
translatableElements?: string[];
}
interface JsonFormatSettings extends CommonFileFormatSettings {
type?: 'i18next_json' | 'nestjs_i18n';
}
interface MdxV2FormatSettings extends CommonFileFormatSettings {
excludeCodeBlocks?: boolean;
excludedFrontMatterElements?: string[];
}
interface MdxV1FormatSettings extends CommonFileFormatSettings {
excludeCodeBlocks?: boolean;
excludedFrontMatterElements?: string[];
type?: 'mdx_v1' | 'mdx_v2';
}
interface FmHtmlFormatSettings extends CommonFileFormatSettings {
excludedElements?: boolean;
excludedFrontMatterElements?: string[];
}
interface HtmlFormatSettings extends CommonFileFormatSettings {
excludedElements?: boolean;
}
interface DocxFileFormatSettings extends CommonFileFormatSettings {
cleanTagsAggressively?: boolean;
translateHiddenText?: boolean;
translateHyperlinkUrls?: boolean;
translateHiddenRowsAndColumns?: boolean;
importNotes?: boolean;
importHiddenSlides?: boolean;
}
type TmContextType = 'segmentContext' | 'auto' | 'prevAndNextSegment';
type WorkflowTemplateStepConfig = WorkflowTemplateStepConfigTranslateProofread | WorkflowTemplateStepConfigVendor | WorkflowTemplateStepConfigTMPreTranslate | WorkflowTemplateStepConfigMTPreTranslate;
interface WorkflowTemplateStepConfigTranslateProofread {
id: number;
languages?: string[];
/**
* @deprecated
*/
assignees?: number[];
config?: {
assignees: {
[key: string]: number[];
};
};
}
interface WorkflowTemplateStepConfigVendor {
id: number;
languages?: string[];
vendorId?: number;
}
interface WorkflowTemplateStepConfigTMPreTranslate {
id: number;
languages?: string[];
config?: {
minRelevant?: number;
autoSubstitution?: boolean;
};
}
interface WorkflowTemplateStepConfigMTPreTranslate {
id: number;
languages?: string[];
mtId?: number;
}
type StringsExporterSettings = AndroidStringsExporterSettings | MacOSXStringsExporterSettings | XliffStringsExporterSettings;
interface ProjectStringsExporterSettings {
id: number;
format: string;
settings: StringsExporterSettings;
createdAt: string;
updatedAt: string;
}
interface AndroidStringsExporterSettings {
convertPlaceholders?: boolean;
convertLineBreaks?: boolean;
useCdataForStringsWithTags?: boolean;
}
interface MacOSXStringsExporterSettings {
convertPlaceholders?: boolean;
convertLineBreaks?: boolean;
}
interface XliffStringsExporterSettings {
languagePairMapping?: {
[key: string]: {
sourceLanguageId: string;
};
};
copySourceToEmptyTarget?: boolean;
exportTranslatorsComment?: boolean;
}
interface AddProjectStringsExporterSettingsRequest {
format: string;
settings: StringsExporterSettings;
}
}