From 90fc2d975830359f14386fbeb9eb04744c5105c0 Mon Sep 17 00:00:00 2001 From: Yevheniy Oliynyk Date: Sat, 13 Jul 2024 11:23:10 +0200 Subject: [PATCH] feat: create task types updates --- src/tasks/index.ts | 303 ++++++++++++++++++++++++++++++++------------- 1 file changed, 219 insertions(+), 84 deletions(-) diff --git a/src/tasks/index.ts b/src/tasks/index.ts index 1ce7da8f..b2d9dc30 100644 --- a/src/tasks/index.ts +++ b/src/tasks/index.ts @@ -59,26 +59,7 @@ export class Tasks extends CrowdinApi { * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.tasks.post */ - addTask( - projectId: number, - request: //TODO review create task types (https://github.com/crowdin/crowdin-api-client-js/issues/376) - | TasksModel.CreateTaskEnterpriseRequest - | TasksModel.CreateTaskEnterpriseVendorRequest - | TasksModel.CreateTaskEnterpriseStringsBasedRequest - | TasksModel.CreateTaskEnterpriseVendorStringsBasedRequest - | TasksModel.CreateTaskRequest - | TasksModel.CreateTaskStringsBasedRequest - | TasksModel.CreateLanguageServiceTaskRequest - | TasksModel.CreateLanguageServiceTaskStringsBasedRequest - | TasksModel.CreateTaskVendorOhtRequest - | TasksModel.CreateTaskVendorOhtStringsBasedRequest - | TasksModel.CreateTaskVendorGengoRequest - | TasksModel.CreateTaskVendorGengoStringsBasedRequest - | TasksModel.CreateTaskVendorTranslatedRequest - | TasksModel.CreateTaskVendorTranslatedStringsBasedRequest - | TasksModel.CreateTaskVendorManualRequest - | TasksModel.CreateTaskVendorManualStringsBasedRequest, - ): Promise> { + addTask(projectId: number, request: TasksModel.CreateTaskRequest): Promise> { const url = `${this.url}/projects/${projectId}/tasks`; return this.post(url, request, this.defaultConfig()); } @@ -251,20 +232,18 @@ export namespace TasksModel { projectId: number; creatorId: number; type: Type | TypeVendor; - vendor: string; status: Status; title: string; assignees: Assignee[]; assignedTeams: AssignedTeam[]; - fileIds: number[]; progress: Progress; translateProgress: Progress; sourceLanguageId: string; targetLanguageId: string; description: string; translationUrl: string; + webUrl: string; wordsCount: number; - filesCount: number; commentsCount: number; deadline: string; startedAt: string; @@ -276,11 +255,13 @@ export namespace TasksModel { updatedAt: string; sourceLanguage: LanguagesModel.Language; targetLanguages: LanguagesModel.Language[]; - branchIds: number[]; labelIds: number[]; excludeLabelIds: number[]; precedingTaskId: number; - webUrl: string; + filesCount: number; + fileIds: number[]; + branchIds: number[]; + vendor: string; } export interface ListUserTasksOptions extends PaginationOptions { @@ -293,25 +274,64 @@ export namespace TasksModel { isArchived: boolean; } - interface CreateTaskBase { + //Task create definitions + + export type CreateTaskRequest = + | CreateTaskEnterpriseByBranchIds + | CreateTaskEnterpriseByFileIds + | CreateTaskEnterpriseByStringIds + | CreateTaskEnterpriseVendorByBranchIds + | CreateTaskEnterpriseVendorByFileIds + | CreateTaskEnterpriseVendorByStringIds + | CreateTaskEnterprisePendingTask + | CreateTaskByFileIds + | CreateTaskByStringIds + | CreateTaskByBranchIds + | CreateTaskByFileIdsLanguageService + | CreateTaskByStringIdsLanguageService + | CreateTaskByBranchIdsLanguageService + | CreateTaskVendorOhtByFileIds + | CreateTaskVendorOhtByStringIds + | CreateTaskVendorOhtByBranchIds + | CreateTaskVendorGengoByFileIds + | CreateTaskVendorGengoByStringIds + | CreateTaskVendorGengoByBranchIds + | CreateTaskVendorManualByFileIds + | CreateTaskVendorManualByStringIds + | CreateTaskVendorManualByBranchIds + | CreateTaskPendingTask + | CreateTaskPendingTaskLanguageService + | CreateTaskPendingTaskVendorManual; + + export interface CreateTaskEnterpriseByBranchIds { + type: Type; + workflowStepId: number; title: string; languageId: string; - fileIds: number[]; - status?: RequestStatus; - description?: string; + branchIds: number[]; labelIds?: number[]; excludeLabelIds?: number[]; + status?: RequestStatus; + description?: string; + splitContent?: boolean; + skipAssignedStrings?: boolean; + assignees?: CreateTaskAssignee[]; + assignedTeams?: AssignedTeam[]; + includePreTranslatedStringsOnly?: boolean; + deadline?: string; + startedAt?: string; dateFrom?: string; dateTo?: string; } - export interface CreateTaskEnterpriseRequest extends CreateTaskBase { + export interface CreateTaskEnterpriseByStringIds { type: Type; workflowStepId: number; - /** - * @deprecated - */ - splitFiles?: boolean; + title: string; + languageId: string; + stringIds: number[]; + status?: RequestStatus; + description?: string; splitContent?: boolean; skipAssignedStrings?: boolean; assignees?: CreateTaskAssignee[]; @@ -319,103 +339,221 @@ export namespace TasksModel { includePreTranslatedStringsOnly?: boolean; deadline?: string; startedAt?: string; + dateFrom?: string; + dateTo?: string; } - export interface CreateTaskEnterpriseVendorRequest extends CreateTaskBase { - workflowStepId: number; - skipAssignedStrings?: boolean; - includePreTranslatedStringsOnly?: boolean; + export type CreateTaskEnterpriseVendorByStringIds = Omit< + CreateTaskEnterpriseByStringIds, + 'type' | 'status' | 'splitContent' | 'assignees' | 'assignedTeams' + >; + + export type CreateTaskEnterpriseVendorByBranchIds = Omit< + CreateTaskEnterpriseByBranchIds, + 'type' | 'status' | 'splitContent' | 'assignees' | 'assignedTeams' + >; + + export type CreateTaskEnterpriseByFileIds = Omit & { + fileIds: number[]; + }; + + export type CreateTaskEnterpriseVendorByFileIds = Omit< + CreateTaskEnterpriseByFileIds, + 'type' | 'status' | 'splitContent' | 'assignees' | 'assignedTeams' + >; + + export interface CreateTaskEnterprisePendingTask { + precedingTaskId: number; + type: Type.PROOFREAD; + title: string; + description?: string; + assignees?: CreateTaskAssignee[]; + assignedTeams?: AssignedTeam[]; deadline?: string; - startedAt?: string; } - export interface CreateTaskRequest extends CreateTaskBase { + export interface CreateTaskByFileIds { + title: string; + languageId: string; type: Type; - splitFiles?: boolean; + fileIds: number[]; + labelIds?: number[]; + excludeLabelIds?: number[]; + status?: RequestStatus; + description?: string; splitContent?: boolean; skipAssignedStrings?: boolean; - skipUntranslatedStrings?: boolean; includePreTranslatedStringsOnly?: boolean; assignees?: CreateTaskAssignee[]; deadline?: string; startedAt?: string; + dateFrom?: string; + dateTo?: string; } - export interface CreateLanguageServiceTaskRequest extends CreateTaskBase { + export type CreateTaskByStringIds = Omit & { + stringIds: number; + }; + + export type CreateTaskByBranchIds = Omit & { branchIds: number }; + + export interface CreateTaskByFileIdsLanguageService { + title: string; + languageId: string; type: TypeVendor; - vendor: string; - skipUntranslatedStrings?: boolean; + vendor: 'crowdin_language_service'; + fileIds: number[]; + labelIds?: number[]; + excludeLabelIds?: number[]; + status?: RequestStatus; + description?: string; includePreTranslatedStringsOnly?: boolean; - includeUntranslatedStringsOnly?: boolean; + assignees?: CreateTaskAssignee[]; + dateFrom?: string; + dateTo?: string; } - export interface CreateTaskVendorOhtRequest extends CreateTaskBase { + export type CreateTaskByStringIdsLanguageService = Omit< + CreateTaskByFileIdsLanguageService, + 'fileIds' | 'labelIds' | 'excludeLabelIds' + > & { + stringIds: number[]; + }; + + export type CreateTaskByBranchIdsLanguageService = Omit & { + branchIds: number[]; + }; + + export interface CreateTaskVendorOhtByFileIds { + title: string; + languageId: string; type: TypeVendor; - vendor: string; + vendor: 'oht'; + fileIds: number[]; + labelIds?: number[]; + excludeLabelIds?: number[]; + status?: RequestStatus; + description?: string; expertise?: Expertise; - skipUntranslatedStrings?: boolean; + editService?: boolean; includePreTranslatedStringsOnly?: boolean; - includeUntranslatedStringsOnly?: boolean; + dateFrom?: string; + dateTo?: string; } - export interface CreateTaskVendorGengoRequest extends CreateTaskBase { + export type CreateTaskVendorOhtByStringIds = Omit< + CreateTaskVendorOhtByFileIds, + 'fileIds' | 'labelIds' | 'excludeLabelIds' + > & { + stringIds: number[]; + }; + + export type CreateTaskVendorOhtByBranchIds = Omit & { + branchIds: number[]; + }; + + export interface CreateTaskVendorGengoByFileIds { + title: string; + languageId: string; type: TypeVendor.TRANSLATE_BY_VENDOR; vendor: 'gengo'; + fileIds: number[]; + labelIds?: number[]; + excludeLabelIds?: number[]; + status?: RequestStatus; + description?: string; expertise?: 'standard' | 'pro'; tone?: Tone; purpose?: Purpose; customerMessage?: string; usePreferred?: boolean; editService?: boolean; + dateFrom?: string; + dateTo?: string; } - export interface CreateTaskVendorTranslatedRequest extends CreateTaskBase { - type: TypeVendor.TRANSLATE_BY_VENDOR; - vendor: 'translated'; - expertise?: TranslatedExpertise; - subject?: Subject; - } + export type CreateTaskVendorGengoByStringIds = Omit< + CreateTaskVendorGengoByFileIds, + 'fileIds' | 'labelIds' | 'excludeLabelIds' + > & { + stringIds: number[]; + }; - export interface CreateTaskVendorManualRequest extends CreateTaskBase { + export type CreateTaskVendorGengoByBranchIds = Omit & { + branchIds: number[]; + }; + + export interface CreateTaskVendorManualByFileIds { + title: string; + languageId: string; type: TypeVendor; - vendor: string; + vendor: + | 'alconost' + | 'babbleon' + | 'tomedes' + | 'e2f' + | 'write_path_admin' + | 'inlingo' + | 'acclaro' + | 'translate_by_humans' + | 'lingo24' + | 'assertio_language_services' + | 'gte_localize' + | 'kettu_solutions' + | 'languageline_solutions'; + fileIds: number[]; + labelIds?: number[]; + excludeLabelIds?: number[]; + status?: RequestStatus; + description?: string; skipAssignedStrings?: boolean; - skipUntranslatedStrings?: boolean; includePreTranslatedStringsOnly?: boolean; assignees?: CreateTaskAssignee[]; deadline?: string; startedAt?: string; + dateFrom?: string; + dateTo?: string; } - export type CreateTaskEnterpriseVendorStringsBasedRequest = Omit & { - branchIds: number[]; - }; - - export type CreateTaskEnterpriseStringsBasedRequest = Omit & { - branchIds: number[]; + export type CreateTaskVendorManualByStringIds = Omit< + CreateTaskVendorManualByFileIds, + 'fileIds' | 'labelIds' | 'excludeLabelIds' + > & { + stringIds: number[]; }; - export type CreateTaskStringsBasedRequest = Omit & { branchIds: number[] }; - - export type CreateTaskVendorManualStringsBasedRequest = Omit & { + export type CreateTaskVendorManualByBranchIds = Omit & { branchIds: number[]; }; - export type CreateTaskVendorTranslatedStringsBasedRequest = Omit & { - branchIds: number[]; - }; + export interface CreateTaskPendingTask { + precedingTaskId: number; + type: Type.PROOFREAD; + title: string; + description?: string; + assignees?: CreateTaskAssignee[]; + deadline?: string; + } - export type CreateTaskVendorGengoStringsBasedRequest = Omit & { - branchIds: number[]; - }; + export interface CreateTaskPendingTaskLanguageService { + precedingTaskId: number; + type: TypeVendor.PROOFREAD_BY_VENDOR; + vendor: 'crowdin_language_service'; + title: string; + description?: string; + deadline?: string; + } - export type CreateTaskVendorOhtStringsBasedRequest = Omit & { - branchIds: number[]; - }; + export interface CreateTaskPendingTaskVendorManual { + precedingTaskId: number; + type: TypeVendor.PROOFREAD_BY_VENDOR; + vendor: CreateTaskVendorManualByFileIds['vendor']; + title: string; + description?: string; + deadline?: string; + } - export type CreateLanguageServiceTaskStringsBasedRequest = Omit & { - branchIds: number[]; - }; + //END export interface CreateTaskAssignee { id: number; @@ -465,15 +603,12 @@ export namespace TasksModel { | 'marketing-consumer-media' | 'business-finance' | 'legal-certificate' - | 'cv' | 'medical' - | 'patents' | 'ad-words-banners' | 'automotive-aerospace' | 'scientific' | 'scientific-academic' | 'tourism' - | 'certificates-translation' | 'training-employee-handbooks' | 'forex-crypto';