@crowdin/crowdin-api-client
Version:
JavaScript library for Crowdin API
554 lines (553 loc) • 23.9 kB
TypeScript
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';
}