UNPKG

@crowdin/crowdin-api-client

Version:
554 lines (553 loc) 23.9 kB
import { CrowdinApi, DownloadLink, PaginationOptions, PatchRequest, ResponseList, ResponseObject, Status } from '../core'; /** * Reports help to estimate costs, calculate translation costs, and identify the top members. * * Use API to generate Cost Estimate, Translation Cost, and Top Members reports. * You can then export reports in .xlsx or .csv file formats. * Report generation is an asynchronous operation and shall be completed with a sequence of API methods. */ export declare class Reports extends CrowdinApi { /** * @param options optional parameters for the request * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.reports.archives.getMany */ listOrganizationReportArchives(options?: ReportsModel.ListReportArchiveParams): Promise<ResponseList<ReportsModel.ReportArchive>>; /** * @param archiveId archive identifier * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.reports.archives.get */ getOrganizationReportArchive(archiveId: number): Promise<ResponseObject<ReportsModel.ReportArchive>>; /** * @param archiveId archive identifier * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.reports.archives.delete */ deleteOrganizationReportArchive(archiveId: number): Promise<void>; /** * @param archiveId archive identifier * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.reports.archives.exports.post */ exportOrganizationReportArchive(archiveId: number, request?: { format?: ReportsModel.Format; }): Promise<ResponseObject<Status<ReportsModel.ReportArchiveStatusAttribute>>>; /** * @param archiveId archive identifier * @param exportId export identifier * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.reports.archives.exports.get */ checkOrganizationReportArchiveStatus(archiveId: number, exportId: string): Promise<ResponseObject<Status<ReportsModel.ReportArchiveStatusAttribute>>>; /** * @param archiveId archive identifier * @param exportId export identifier * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.reports.archives.exports.download.get */ downloadOrganizationReportArchive(archiveId: number, exportId: string): Promise<ResponseObject<DownloadLink>>; /** * @param userId user identifier * @param options optional parameters for the request * @see https://developer.crowdin.com/api/v2/#operation/api.reports.archives.getMany */ listUserReportArchives(userId: number, options?: ReportsModel.ListReportArchiveParams): Promise<ResponseList<ReportsModel.ReportArchive>>; /** * @param userId user identifier * @param archiveId archive identifier * @see https://developer.crowdin.com/api/v2/#operation/api.users.reports.archives.get */ getUserReportArchive(userId: number, archiveId: number): Promise<ResponseObject<ReportsModel.ReportArchive>>; /** * @param userId user identifier * @param archiveId archive identifier * @see https://developer.crowdin.com/api/v2/#operation/api.users.reports.archives.delete */ deleteUserReportArchive(userId: number, archiveId: number): Promise<void>; /** * @param userId user identifier * @param archiveId archive identifier * @see https://developer.crowdin.com/api/v2/#operation/api.reports.archives.exports.post */ exportUserReportArchive(userId: number, archiveId: number, request?: { format?: ReportsModel.Format; }): Promise<ResponseObject<Status<ReportsModel.ReportArchiveStatusAttribute>>>; /** * @param userId user identifier * @param archiveId archive identifier * @param exportId export identifier * @see https://developer.crowdin.com/api/v2/#operation/api.users.reports.archives.exports.get */ checkUserReportArchiveStatus(userId: number, archiveId: number, exportId: string): Promise<ResponseObject<Status<ReportsModel.ReportArchiveStatusAttribute>>>; /** * @param userId user identifier * @param archiveId archive identifier * @param exportId export identifier * @see https://developer.crowdin.com/api/v2/#operation/api.users.reports.archives.exports.download.get */ downloadUserReportArchive(userId: number, archiveId: number, exportId: string): Promise<ResponseObject<DownloadLink>>; /** * @param groupId group identifier * @param request request body * @see https://support.crowdin.com/enterprise/api/#operation/api.groups.reports.post */ generateGroupReport(groupId: number, request: ReportsModel.GenerateGroupReportRequest): Promise<ResponseObject<Status<ReportsModel.ReportStatusAttributes<ReportsModel.GroupReportSchema>>>>; /** * @param groupId group identifier * @param reportId report identifier * @see https://support.crowdin.com/enterprise/api/#operation/api.groups.reports.get */ checkGroupReportStatus(groupId: number, reportId: string): Promise<ResponseObject<Status<ReportsModel.ReportStatusAttributes<ReportsModel.GroupReportSchema>>>>; /** * @param groupId group identifier * @param reportId report identifier * @see https://support.crowdin.com/enterprise/api/#operation/api.groups.reports.download.download */ downloadGroupReport(groupId: number, reportId: string): Promise<ResponseObject<DownloadLink>>; /** * @param options optional parameters for the request * @see https://support.crowdin.com/developer/enterprise/api/v2/#tag/Reports/operation/api.reports.settings-templates.getMany */ listOrganizationReportSettingsTemplates(options?: ReportsModel.ListOrganizationReportSettingsParams): Promise<ResponseList<ReportsModel.OrganizationReportSettings>>; /** * @param request request body * @see https://support.crowdin.com/developer/enterprise/api/v2/#tag/Reports/operation/api.reports.settings-templates.post */ addOrganizationReportSettingsTemplate(request: ReportsModel.AddOrganizationReportSettingsRequest): Promise<ResponseObject<ReportsModel.OrganizationReportSettings>>; /** * @param reportSettingsTemplateId report settings template identifier * @see https://support.crowdin.com/developer/enterprise/api/v2/#tag/Reports/operation/api.reports.settings-templates.get */ getOrganizationReportSettingsTemplate(reportSettingsTemplateId: number): Promise<ResponseObject<ReportsModel.OrganizationReportSettings>>; /** * @param reportSettingsTemplateId report settings template identifier * @param request request body * @see https://support.crowdin.com/developer/enterprise/api/v2/#tag/Reports/operation/api.reports.settings-templates.patch */ editOrganizationReportSettingsTemplate(reportSettingsTemplateId: number, request: PatchRequest[]): Promise<ResponseObject<ReportsModel.OrganizationReportSettings>>; /** * @param reportSettingsTemplateId report settings template identifier * @see https://support.crowdin.com/developer/enterprise/api/v2/#tag/Reports/operation/api.reports.settings-templates.delete */ deleteOrganizationReportSettingsTemplate(reportSettingsTemplateId: number): Promise<void>; /** * @param request request body * @see https://support.crowdin.com/enterprise/api/#operation/api.reports.post */ generateOrganizationReport(request: ReportsModel.GenerateOrganizationReportRequest): Promise<ResponseObject<Status<ReportsModel.ReportStatusAttributes<ReportsModel.OrganizationReportSchema>>>>; /** * @param reportId report identifier * @see https://support.crowdin.com/enterprise/api/#operation/api.reports.get */ checkOrganizationReportStatus(reportId: string): Promise<ResponseObject<Status<ReportsModel.ReportStatusAttributes<ReportsModel.OrganizationReportSchema>>>>; /** * @param reportId report identifier * @see https://support.crowdin.com/enterprise/api/#operation/api.reports.download.download */ downloadOrganizationReport(reportId: string): Promise<ResponseObject<DownloadLink>>; /** * @param projectId project identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post */ generateReport(projectId: number, request: ReportsModel.GenerateReportRequest): Promise<ResponseObject<Status<ReportsModel.ReportStatusAttributes<ReportsModel.ReportSchema>>>>; /** * @param projectId project identifier * @param reportId report identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.reports.get */ checkReportStatus(projectId: number, reportId: string): Promise<ResponseObject<Status<ReportsModel.ReportStatusAttributes<ReportsModel.ReportSchema>>>>; /** * @param projectId project identifier * @param reportId report identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.reports.download.download */ downloadReport(projectId: number, reportId: string): Promise<ResponseObject<DownloadLink>>; /** * @param projectId project identifier * @param options optional parameters for the request * @see https://developer.crowdin.com/api/v2/#operation/api.projects.reports.settings-templates.getMany */ listReportSettingsTemplates(projectId: number, options?: PaginationOptions): Promise<ResponseList<ReportsModel.ReportSettings>>; /** * @param projectId project identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.reports.settings-templates.post */ addReportSettingsTemplate(projectId: number, request: ReportsModel.AddReportSettingsRequest): Promise<ResponseObject<ReportsModel.ReportSettings>>; /** * @param projectId project identifier * @param reportSettingsTemplateId report settings template identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.reports.settings-templates.get */ getReportSettingsTemplate(projectId: number, reportSettingsTemplateId: number): Promise<ResponseObject<ReportsModel.ReportSettings>>; /** * @param projectId project identifier * @param reportSettingsTemplateId report settings template identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.reports.settings-templates.patch */ editReportSettingsTemplate(projectId: number, reportSettingsTemplateId: number, request: PatchRequest[]): Promise<ResponseObject<ReportsModel.ReportSettings>>; /** * @param projectId project identifier * @param reportSettingsTemplateId report settings template identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.settings-templates.delete */ deleteReportSettingsTemplate(projectId: number, reportSettingsTemplateId: number): Promise<void>; /** * @param userId user identifier * @param options optional parameters for the request * @see https://support.crowdin.com/developer/api/v2/#tag/Reports/operation/api.users.reports.settings-templates.getMany */ listUserReportSettingsTemplates(userId: number, options?: PaginationOptions): Promise<ResponseList<ReportsModel.UserReportSettings>>; /** * @param userId user identifier * @param request request body * @see https://support.crowdin.com/developer/api/v2/#tag/Reports/operation/api.users.reports.settings-templates.post */ addUserReportSettingsTemplate(userId: number, request: ReportsModel.AddUserReportSettingsRequest): Promise<ResponseObject<ReportsModel.UserReportSettings>>; /** * @param userId user identifier * @param reportSettingsTemplateId report settings template identifier * @see https://support.crowdin.com/developer/api/v2/#tag/Reports/operation/api.users.reports.settings-templates.get */ getUserReportSettingsTemplate(userId: number, reportSettingsTemplateId: number): Promise<ResponseObject<ReportsModel.UserReportSettings>>; /** * @param userId user identifier * @param reportSettingsTemplateId report settings template identifier * @param request request body * @see https://support.crowdin.com/developer/api/v2/#tag/Reports/operation/api.users.reports.settings-templates.patch */ editUserReportSettingsTemplate(userId: number, reportSettingsTemplateId: number, request: PatchRequest[]): Promise<ResponseObject<ReportsModel.UserReportSettings>>; /** * @param userId user identifier * @param reportSettingsTemplateId report settings template identifier * @see https://support.crowdin.com/developer/api/v2/#tag/Reports/operation/api.users.reports.settings-templates.delete */ deleteUserReportSettingsTemplate(userId: number, reportSettingsTemplateId: number): Promise<void>; } export declare namespace ReportsModel { interface ReportArchive { id: number; scopeType: string; scopeId: number; userId: number; name: string; webUrl: string; scheme: any; createdAt: string; } interface ListReportArchiveParams extends PaginationOptions { scopeType: string; scopeId: number; } interface ReportArchiveStatusAttribute { format: Format; reportName: string; schema: any; } type GroupReportSchema = GroupTranslationCostsPostEditingSchema | GroupTopMembersSchema; type OrganizationReportSchema = GroupTranslationCostsPostEditingSchema | GroupTopMembersSchema; interface GenerateGroupReportRequest { name: string; schema: GroupReportSchema; } interface GenerateOrganizationReportRequest { name: string; schema: OrganizationReportSchema; } interface GroupTranslationCostsPostEditingSchema { projectIds?: number[]; unit?: Unit; currency?: Currency; format?: Format; baseRates: BaseRate; individualRates: IndividualRate[]; netRateSchemes: NetRateSchemas; excludeApprovalsForEditedTranslations?: boolean; preTranslatedStringsCategorizationAdjustment?: boolean; groupBy?: GroupBy; dateFrom?: string; dateTo?: string; userIds?: number[]; } interface GroupTranslationCostsPerEditingByTaskSchema { unit?: Unit; currency?: Currency; format?: Format; baseRates: BaseRate; individualRates: IndividualRate[]; netRateSchemes: NetRateSchemas; taskId?: number; } interface CostsEstimationSchema { projectIds?: number[]; unit?: Unit; currency?: Currency; format?: Format; baseRates: BaseRate; individualRates: IndividualRate[]; netRateSchemes: NetRateSchemas; calculateInternalMatches?: boolean; includePreTranslatedStrings?: boolean; languageId?: string; branchIds?: number[]; dateFrom?: string; dateTo?: string; labelIds?: number[]; labelIncludeType?: LabelIncludeType; } interface CostsEstimationByTaskSchema { unit?: Unit; currency?: Currency; format?: Format; baseRates?: BaseRate; individualRates?: IndividualRate[]; netRateSchemes?: NetRateSchemas; calculateInternalMatches?: boolean; includePreTranslatedStrings?: boolean; taskId?: number; } interface GroupTopMembersSchema { projectIds?: number[]; unit?: Unit; languageId?: string; format?: Format; dateFrom?: string; dateTo?: string; } interface RawDataSchema { mode: ContributionMode; unit?: Unit; languageId?: string; userId?: number; dateFrom?: string; dateTo?: string; } type GenerateReportRequest = PreTranslateAccuracy | TranslateAccuracy | CostEstimationPostEnding | TranslationCostsPostEnding | TopMembers | ContributionRawData; type ReportSchema = Pick<GenerateReportRequest, 'schema'>; interface PreTranslateAccuracy { name: 'pre-translate-efficiency' | 'pre-translate-accuracy'; schema: PreTranslateAccuracySchema | PreTranslateAccuracySchemaByTask; } interface TranslateAccuracy { name: 'translator-accuracy'; schema: TranslateAccuracySchema; } interface CostEstimationPostEnding { name: 'costs-estimation-pe'; schema: CostEstimationPostEndingSchema | CostEstimationPostEndingSchemaByTask; } interface TranslationCostsPostEnding { name: 'translation-costs-pe'; schema: TranslationCostsPostEndingSchema | TranslationCostsPostEndingSchemaByTask; } interface TopMembers { name: 'top-members'; schema: TopMembersSchema; } interface ContributionRawData { name: 'contribution-raw-data'; schema: ContributionRawDataSchema | ContributionRawDataSchemaByTask; } interface ReportStatusAttributes<S> { format: Format; reportName: string; schema: S; } interface PreTranslateAccuracySchema { unit?: Unit; format?: Format; postEditingCategories?: string[]; languageId?: string; dateFrom?: string; dateTo?: string; } interface PreTranslateAccuracySchemaByTask { unit?: Unit; format?: Format; postEditingCategories?: string[]; taskId?: number; } interface TranslateAccuracySchema { unit?: Unit; format?: Format; postEditingCategories?: string[]; languageId?: string; userIds?: number[]; dateFrom?: string; dateTo?: string; } interface CostEstimationPostEndingSchema { unit?: Unit; currency?: Currency; format?: Format; baseRates: BaseRate; individualRates: IndividualRate[]; netRateSchemes: Omit<NetRateSchemas, 'mtMatch' | 'suggestionMatch'>; calculateInternalMatches?: boolean; includePreTranslatedStrings?: boolean; languageId?: string; fileIds?: number[]; directoryIds?: number[]; branchIds?: number[]; dateFrom?: string; dateTo?: string; labelIds?: number[]; labelIncludeType?: LabelIncludeType; workflowStepId?: number; } interface CostEstimationPostEndingSchemaByTask { unit?: Unit; currency?: Currency; format?: Format; baseRates?: BaseRate; individualRates?: IndividualRate[]; netRateSchemes?: Omit<NetRateSchemas, 'mtMatch' | 'suggestionMatch'>; calculateInternalMatches?: boolean; includePreTranslatedStrings?: boolean; taskId?: number; } interface TranslationCostsPostEndingSchemaByTask { unit?: Unit; currency?: Currency; format?: Format; baseRates: BaseRate; individualRates: IndividualRate[]; netRateSchemes: NetRateSchemas; taskId?: number; excludeApprovalsForEditedTranslations?: boolean; preTranslatedStringsCategorizationAdjustment?: boolean; } interface TranslationCostsPostEndingSchema { unit?: Unit; currency?: Currency; format?: Format; baseRates: BaseRate; individualRates: IndividualRate[]; netRateSchemes: NetRateSchemas; excludeApprovalsForEditedTranslations?: boolean; preTranslatedStringsCategorizationAdjustment?: boolean; groupBy?: GroupBy; dateFrom?: string; dateTo?: string; languageId?: string; userIds?: number[]; fileIds?: number[]; directoryIds?: number[]; branchIds?: number[]; labelIds?: number; labelIncludeType?: LabelIncludeType; workflowStepId?: number; } interface TopMembersSchema { unit?: Unit; languageId?: string; format?: Format; dateFrom?: string; dateTo?: string; } interface ContributionRawDataSchema { mode: ContributionMode; unit?: Unit; languageId?: string; userId?: string; columns?: Column[]; fileIds?: number[]; directoryIds?: number[]; branchIds?: number[]; tmIds?: number[]; mtIds?: number[]; aiPromptIds?: number[]; dateFrom?: string; dateTo?: string; } interface ContributionRawDataSchemaByTask { mode: ContributionMode; unit?: Unit; taskId: number; columns?: Column[]; tmIds?: number[]; mtIds?: number[]; aiPromptIds?: number[]; dateFrom?: string; dateTo?: string; } interface PreTranslateEfficiencySchema { unit?: Unit; format?: Format; postEditingCategories?: string[]; languageId?: string; dateFrom?: string; dateTo?: string; } interface ListOrganizationReportSettingsParams extends PaginationOptions { projectId?: number; groupId?: number; } interface ReportSettings { id: number; name: string; currency: Currency; unit: Unit; config: ReportSettinsConfig; isPublic: boolean; isGlobal: boolean; createdAt: string; updatedAt: string; } interface AddReportSettingsRequest { name: string; currency: Currency; unit: Unit; config: ReportSettinsConfig; isPublic?: boolean; isGlobal?: boolean; } type UserReportSettings = Omit<ReportSettings, 'isPublic' | 'isGlobal'>; type AddUserReportSettingsRequest = Omit<AddReportSettingsRequest, 'isPublic' | 'isGlobal'>; type OrganizationReportSettings = Omit<ReportSettings, 'isGlobal'> & { projectId: number; groupId: number; }; type AddOrganizationReportSettingsRequest = Omit<AddReportSettingsRequest, 'isGlobal'> & { projectId?: number; groupId?: number; }; interface ReportSettinsConfig { baseRates: BaseRate; netRateSchemes: NetRateSchemas[]; individualRates: IndividualRate[]; } type Unit = 'strings' | 'words' | 'chars' | 'chars_with_spaces'; type Currency = 'USD' | 'EUR' | 'JPY' | 'GBP' | 'AUD' | 'CAD' | 'CHF' | 'CNY' | 'SEK' | 'NZD' | 'MXN' | 'SGD' | 'HKD' | 'NOK' | 'KRW' | 'TRY' | 'RUB' | 'INR' | 'BRL' | 'ZAR' | 'GEL' | 'UAH'; type Format = 'xlsx' | 'csv' | 'json'; interface BaseRate { fullTranslation: number; proofread: number; } interface IndividualRate extends BaseRate { languageIds: string[]; userIds: number[]; fullTranslation: number; proofread: number; } interface NetRateSchemas { tmMatch: { matchType: Mode; price: number; }[]; mtMatch: { matchType: Mode; price: number; }[]; suggestionMatch: { matchType: Mode; price: number; }[]; aiMatch?: { matchType: Mode; price: number; }[]; } type Mode = 'no_match' | 'tm_match' | 'approval' | '99-95' | '94-90' | '89-80' | 'perfect' | '100'; type ContributionMode = 'translations' | 'approvals' | 'votes'; type GroupBy = 'user' | 'language'; type LabelIncludeType = 'strings_with_label' | 'strings_without_label'; type Column = 'userId' | 'languageId' | 'stringId' | 'translationId' | 'fileId' | 'filePath' | 'pluralForm' | 'sourceStringTextHash' | 'mtEngine' | 'mtId' | 'tmName' | 'tmId' | 'aiPromptName' | 'aiPromptId' | 'preTranslated' | 'tmMatch' | 'mtMatch' | 'aiMatch' | 'suggestionMatch' | 'sourceUnits' | 'targetUnits' | 'createdAt' | 'updatedAt' | 'mark'; }