import { CrowdinApi, DownloadLink, PaginationOptions, PatchRequest, ResponseList, ResponseObject, Status } from '../core'; /** * Source files are resources for translation. You can keep files structure using folders or manage different versions of the content via branches. * * Use API to keep the source files up to date, check on file revisions, and manage project branches. * Before adding source files to the project, upload each file to the Storage first. */ export declare class SourceFiles extends CrowdinApi { /** * @requiredScope project.source.string:read * @param projectId project identifier * @param branchId branch identifier * @param cloneId clone branch identifier * @see https://developer.crowdin.com/api/v2/string-based/#operation/api.projects.branches.clones.branch.get */ getClonedBranch(projectId: number, branchId: number, cloneId: string): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param branchId branch identifier * @param request request body * @see https://developer.crowdin.com/api/v2/string-based/#operation/api.projects.branches.clones.post */ clonedBranch(projectId: number, branchId: number, request: SourceFilesModel.CloneBranchRequest): Promise>>; /** * @requiredScope project.source.string:read * @param projectId project identifier * @param branchId branch identifier * @param cloneId clone branch identifier * @see https://developer.crowdin.com/api/v2/string-based/#operation/api.projects.branches.clones.get */ checkBranchClonedStatus(projectId: number, branchId: number, cloneId: string): Promise>>; /** * @requiredScope project.source.file:read * @param options optional parameters for the request * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.branches.getMany */ listBranches(options: SourceFilesModel.ListBranchesOptions): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param options optional parameters for the request * @see https://developer.crowdin.com/api/v2/#operation/api.projects.branches.getMany */ listProjectBranches(projectId: number, options?: SourceFilesModel.ListProjectBranchesOptions): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param name filter branch by name * @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.branches.getMany */ listProjectBranches(projectId: number, name?: string, limit?: number, offset?: number): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.branches.post */ createBranch(projectId: number, request: SourceFilesModel.CreateBranchRequest): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param branchId branch identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.branches.get */ getBranch(projectId: number, branchId: number): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param branchId branch identifier * @param options optional delete options * @see https://developer.crowdin.com/api/v2/#operation/api.projects.branches.delete */ deleteBranch(projectId: number, branchId: number, options?: SourceFilesModel.DeleteOptions): Promise | void>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param branchId branch identifier * @param jobIdentifier deletion job identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.branches.jobs.get */ checkDeleteBranchJobStatus(projectId: number, branchId: number, jobIdentifier: string): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param branchId branch identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.branches.patch */ editBranch(projectId: number, branchId: number, request: PatchRequest[]): Promise>; /** * @requiredScope project.source.string:write * @param projectId project identifier * @param branchId branch identifier * @param request request body * @see https://support.crowdin.com/developer/api/v2/string-based/#tag/Branches/operation/api.projects.branches.merges.post */ mergeBranch(projectId: number, branchId: number, request: SourceFilesModel.MergeBranchRequest): Promise>>; /** * @requiredScope project.source.string:read * @param projectId project identifier * @param branchId branch identifier * @param mergeId merge branch identifier * @see https://support.crowdin.com/developer/api/v2/string-based/#tag/Branches/operation/api.projects.branches.merges.get */ checkBranchMergeStatus(projectId: number, branchId: number, mergeId: string): Promise>>; /** * @requiredScope project.source.string:read * @param projectId project identifier * @param branchId branch identifier * @param mergeId merge branch identifier * @see https://support.crowdin.com/developer/api/v2/string-based/#tag/Branches/operation/api.projects.branches.merges.summary.get */ getBranchMergeSummary(projectId: number, branchId: number, mergeId: string): Promise>; /** * @requiredScope project.source.file:read * @param options optional parameters for the request * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.directories.getMany */ listDirectories(options: SourceFilesModel.ListDirectoriesOptions): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param options optional parameters for the request * @see https://developer.crowdin.com/api/v2/#operation/api.projects.directories.getMany */ listProjectDirectories(projectId: number, options?: SourceFilesModel.ListProjectDirectoriesOptions): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param branchId filter directories by branchId * @param directoryId filter directories by directoryId * @param limit maximum number of items to retrieve (default 25) * @param offset starting offset in the collection (default 0) * @param filter use to filter directories by name * @param recursion use to list directories recursively (works only when directoryId or branchId parameter is specified) * @deprecated optional parameters should be passed through an object * @see https://developer.crowdin.com/api/v2/#operation/api.projects.directories.getMany */ listProjectDirectories(projectId: number, branchId?: number, directoryId?: number, limit?: number, offset?: number, filter?: string, recursion?: string): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.directories.post */ createDirectory(projectId: number, request: SourceFilesModel.CreateDirectoryRequest): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param directoryId directory identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.directories.get */ getDirectory(projectId: number, directoryId: number): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param directoryId directory identifier * @param options optional delete options * @see https://developer.crowdin.com/api/v2/#operation/api.projects.directories.delete */ deleteDirectory(projectId: number, directoryId: number, options?: SourceFilesModel.DeleteOptions): Promise | void>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param directoryId directory identifier * @param jobIdentifier deletion job identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.directories.jobs.get */ checkDeleteDirectoryJobStatus(projectId: number, directoryId: number, jobIdentifier: string): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param directoryId directory identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.directories.patch */ editDirectory(projectId: number, directoryId: number, request: PatchRequest[]): Promise>; /** * @requiredScope project.source.file:read * @param options optional parameters for the request * @see https://developer.crowdin.com/enterprise/api/v2/#operation/api.files.getMany */ listFiles(options: SourceFilesModel.ListFilesOptions): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param options optional parameters for the request * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.getMany */ listProjectFiles(projectId: number, options?: SourceFilesModel.ListProjectFilesOptions): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param branchId list branch files (Note! You can either list files for the specified branch (branchId) in the same request) * @param directoryId list directory files (Note! You can either list files for the specified directory (directoryId) in the same request) * @param limit maximum number of items to retrieve (default 25) * @param offset starting offset in the collection (default 0) * @param recursion use to list files recursively * @param filter use to filter files by name * @deprecated optional parameters should be passed through an object * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.getMany */ listProjectFiles(projectId: number, branchId?: number, directoryId?: number, limit?: number, offset?: number, recursion?: any, filter?: string): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.post */ createFile(projectId: number, request: SourceFilesModel.CreateFileRequest): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.get */ getFile(projectId: number, fileId: number): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param fileId file identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.put */ updateOrRestoreFile(projectId: number, fileId: number, request: SourceFilesModel.ReplaceFileFromStorageRequest | SourceFilesModel.RestoreFile): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param fileId file identifier * @param options optional delete options * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.delete */ deleteFile(projectId: number, fileId: number, options?: SourceFilesModel.DeleteOptions): Promise | void>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file identifier * @param jobIdentifier deletion job identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.jobs.get */ checkDeleteFileJobStatus(projectId: number, fileId: number, jobIdentifier: string): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param fileId file identifier * @param request request body * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.patch */ editFile(projectId: number, fileId: number, request: PatchRequest[]): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.preview.get */ downloadFilePreview(projectId: number, fileId: number): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.download.get */ downloadFile(projectId: number, fileId: number): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file identifier * @param options optional pagination parameters for the request * @see https://support.crowdin.com/developer/api/v2/#tag/Source-Files/operation/api.projects.files.references.getMany */ listAssetReferences(projectId: number, fileId: number, options?: PaginationOptions): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file identifier * @param referenceId reference identifier * @see https://support.crowdin.com/developer/api/v2/#tag/Source-Files/operation/api.projects.files.references.get */ getAssetReference(projectId: number, fileId: number, referenceId: number): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param fileId file identifier * @param request request body * @see https://support.crowdin.com/developer/api/v2/#tag/Source-Files/operation/api.projects.files.references.post */ addAssetReference(projectId: number, fileId: number, request: SourceFilesModel.AssetReferenceRequest): Promise>; /** * @requiredScope project.source.file:write * @param projectId project identifier * @param fileId file identifier * @param referenceId reference identifier * @see https://support.crowdin.com/developer/api/v2/#tag/Source-Files/operation/api.projects.files.references.delete */ deleteAssetReference(projectId: number, fileId: number, referenceId: number): Promise; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file identifier * @param options optional pagination parameters for the request * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.revisions.getMany */ listFileRevisions(projectId: number, fileId: number, options?: PaginationOptions): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file 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.files.revisions.getMany */ listFileRevisions(projectId: number, fileId: number, limit?: number, offset?: number): Promise>; /** * @requiredScope project.source.file:read * @param projectId project identifier * @param fileId file identifier * @param revisionId revision identifier * @see https://developer.crowdin.com/api/v2/#operation/api.projects.files.revisions.get */ getFileRevision(projectId: number, fileId: number, revisionId: number): Promise>; /** * @requiredScope project.source.string:read * @param projectId project identifier * @param options optional parameters for the request * @see https://support.crowdin.com/enterprise/api/#operation/api.projects.strings.reviewed-builds.getMany */ listReviewedSourceFilesBuild(projectId: number, options?: SourceFilesModel.ListReviewedSourceFilesBuildOptions): Promise>; /** * @requiredScope project.source.string:read * @param projectId project identifier * @param branchId filter builds by branchId * @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.projects.strings.reviewed-builds.getMany */ listReviewedSourceFilesBuild(projectId: number, branchId?: number, limit?: number, offset?: number): Promise>; /** * @requiredScope project.source.string:write * @param projectId project identifier * @param request request body * @see https://support.crowdin.com/enterprise/api/#operation/api.projects.strings.reviewed-builds.post */ buildReviewedSourceFiles(projectId: number, request?: SourceFilesModel.BuildReviewedSourceFilesRequest): Promise>; /** * @requiredScope project:read * @param projectId project identifier * @param buildId build identifier * @see https://support.crowdin.com/enterprise/api/#operation/api.projects.strings.reviewed-builds.get */ checkReviewedSourceFilesBuildStatus(projectId: number, buildId: number): Promise>; /** * @requiredScope project:read * @param projectId project identifier * @param buildId build identifier * @see https://support.crowdin.com/enterprise/api/#operation/api.projects.strings.reviewed-builds.download.download */ downloadReviewedSourceFiles(projectId: number, buildId: number): Promise>; } export declare namespace SourceFilesModel { interface Branch { id: number; projectId: number; name: string; title: string; exportPattern: string; priority: Priority; isProtected?: boolean; createdAt: string; updatedAt: string | null; } interface CreateBranchRequest { name: string; title?: string; exportPattern?: string; priority?: Priority; isProtected?: boolean; } interface CloneBranchRequest { name: string; title?: string; isProtected?: boolean; } interface MergeBranchRequest { deleteAfterMerge?: boolean; sourceBranchId: number; acceptSourceChanges?: boolean; dryRun?: boolean; } interface MergeBranchAttributes { sourceBranchId: number; deleteAfterMerge: boolean; acceptSourceChanges?: boolean; dryRun?: boolean; } interface MergeBranchSummary { status: string; sourceBranchId: number; targetBranchId: number; dryRun: boolean; acceptSourceChanges?: boolean; details: { added: number; deleted: number; updated: number; conflicted: number; }; } type Priority = 'low' | 'normal' | 'high'; interface ListProjectDirectoriesOptions extends PaginationOptions { branchId?: number; directoryId?: number; filter?: string; recursion?: string | boolean; orderBy?: string; } interface Directory { id: number; projectId: number; branchId: number | null; directoryId: number | null; name: string; title: string; exportPattern: string; path: string; priority: Priority; createdAt: string | null; updatedAt: string | null; } interface CreateDirectoryRequest { name: string; branchId?: number; directoryId?: number; title?: string; exportPattern?: string; priority?: Priority; } interface ListProjectFilesOptions extends PaginationOptions { branchId?: number; directoryId?: number; recursion?: any; filter?: string; orderBy?: string; } interface File { id: number; projectId: number; branchId: number | null; directoryId: number | null; name: string; title: string | null; context: string | null; type: string; path: string; status: string; revisionId: number; priority: Priority; importOptions: ImportOptions | null; exportOptions: ExportOptions | null; excludedTargetLanguages: string[] | null; parserVersion: number | null; createdAt: string | null; updatedAt: string | null; fields: Record; } interface CreateFileRequest { storageId: number; name: string; branchId?: number; directoryId?: number; title?: string; context?: string; type?: FileType; parserVersion?: number; importOptions?: ImportOptions; exportOptions?: ExportOptions; excludedTargetLanguages?: string[] | null; attachLabelIds?: number[]; fields?: Record | null; } interface ReplaceFileFromStorageRequest { storageId: number; name?: string; updateOption?: UpdateOption; importOptions?: ImportOptions; exportOptions?: ExportOptions; attachLabelIds?: number[]; detachLabelIds?: number[]; replaceModifiedContext?: boolean; } type ExportOptions = GeneralExportOptions | PropertyExportOptions | JavaScriptExportOptions | MdExportOptions | DocxFileExportOptions; type ImportOptions = SpreadsheetImportOptions | XmlImportOptions | WebXmlImportOptions | DocxFileImportOptions | VsdxFileImportOptions | IdmlFileImportOptions | HtmlFileImportOptions | HtmlFrontMatterFileImportOptions | MdxFileImportOptions | MdFileImportOptions | StringCatalogFileImportOptions | AdocFileImportOptions | VdfFileImportOptions | OtherImportOptions; interface RestoreFile { revisionId: number; } interface FileRevision { id: number; projectId: number; fileId: number; restoreToRevision: number | null; info: FileRevisionInfo; date: string; } interface FileRevisionInfo { added: FileRevisionInfoAttribute; deleted: FileRevisionInfoAttribute; updated: FileRevisionInfoAttribute; } interface FileRevisionInfoAttribute { strings: number; words: number; } type FileType = 'auto' | 'android' | 'macosx' | 'resx' | 'properties' | 'gettext' | 'yaml' | 'php' | 'json' | 'xml' | 'ini' | 'rc' | 'resw' | 'resjson' | 'qtts' | 'joomla' | 'chrome' | 'dtd' | 'dklang' | 'flex' | 'nsh' | 'wxl' | 'xliff' | 'xliff_two' | 'html' | 'haml' | 'txt' | 'csv' | 'md' | 'mdx_v1' | 'mdx_v2' | 'flsnp' | 'fm_html' | 'fm_md' | 'mediawiki' | 'docx' | 'vsdx' | 'xlsx' | 'sbv' | 'properties_play' | 'properties_xml' | 'maxthon' | 'go_json' | 'dita' | 'mif' | 'idml' | 'stringsdict' | 'plist' | 'vtt' | 'vdf' | 'srt' | 'stf' | 'toml' | 'contentful_rt' | 'svg' | 'js' | 'coffee' | 'nestjs_i18n' | 'webxml' | 'ts' | 'i18next_json' | 'xaml' | 'arb' | 'adoc' | 'fbt' | 'loc'; interface SpreadsheetImportOptions { firstLineContainsHeader?: boolean; importHiddenSheets?: boolean; importHiddenRows?: boolean; importEqSuggestions?: boolean; autoApproveImported?: boolean; translateHidden?: boolean; addToTm?: boolean; contentSegmentation?: boolean; srxStorageId?: number; importTranslations?: boolean; scheme?: Scheme; } interface Scheme { none: number; identifier: number; sourcePhrase: number; sourceOrTranslation: number; translation: number; context: number; maxLength: number; labels: number; [key: string]: number; } interface XmlImportOptions { translateContent?: boolean; translateAttributes?: boolean; inlineTags?: string[]; contentSegmentation?: boolean; translatableElements?: string[]; srxStorageId?: number; } interface WebXmlImportOptions { inlineTags?: string[]; hideAttributeValues?: boolean; contentSegmentation?: boolean; srxStorageId?: number; } interface DocxFileImportOptions { cleanTagsAggressively?: boolean; translateHiddenText?: boolean; translateHyperlinkUrls?: boolean; translateHiddenRowsAndColumns?: boolean; importNotes?: boolean; importHiddenSlides?: boolean; contentSegmentation?: boolean; srxStorageId?: number; translateDocProperties?: boolean; translateComments?: boolean; ignoreWhitespaceStyles?: boolean; addTabAsCharacter?: boolean; addLineSeparatorAsCharacter?: boolean; lineSeparatorReplacement?: string; replaceNoBreakHyphenTag?: boolean; ignoreSoftHyphenTag?: boolean; complexFieldDefinitionsToExtract?: string[]; translateWordHeadersFooters?: boolean; translateWordGraphicName?: boolean; translateWordGraphicDescription?: boolean; ignoreWordFontColors?: boolean; wordFontColorsMinIgnoranceThreshold?: string; wordFontColorsMaxIgnoranceThreshold?: string; excludeWordStyles?: string[]; translateWordInExcludeStyleMode?: boolean; wordHighlightColors?: string[]; translateWordInExcludeHighlightMode?: boolean; translateWordExcludeColors?: boolean; wordExcludedColors?: string[]; translateExcelCellsCopied?: boolean; translateExcelSheetNames?: boolean; excelExcludedColors?: string[]; translateExcelDiagramData?: boolean; translateExcelDrawings?: boolean; } interface VsdxFileImportOptions { cleanTagsAggressively?: boolean; translateHyperlinkUrls?: boolean; contentSegmentation?: boolean; srxStorageId?: number; } interface IdmlFileImportOptions { inlineHyperlinkText?: boolean; contentSegmentation?: boolean; srxStorageId?: number; } interface HtmlFileImportOptions { excludedElements?: string[]; inlineTags?: string[]; hideAttributeValues?: boolean; contentSegmentation?: boolean; srxStorageId?: number; } interface HtmlFrontMatterFileImportOptions extends HtmlFileImportOptions { excludedFrontMatterElements?: string[]; } interface MdxFileImportOptions { excludedFrontMatterElements?: string[]; excludeCodeBlocks?: boolean; contentSegmentation?: boolean; srxStorageId?: number; } interface MdFileImportOptions { excludedFrontMatterElements?: string[]; excludeCodeBlocks?: boolean; inlineTags?: string[]; contentSegmentation?: boolean; srxStorageId?: number; } interface StringCatalogFileImportOptions { importKeyAsSource?: boolean; importTranslations?: boolean; } interface AdocFileImportOptions { excludeIncludeDirectives?: boolean; } interface VdfFileImportOptions { convertIcu?: boolean; addGenderArgument?: boolean; } interface OtherImportOptions { contentSegmentation?: boolean; srxStorageId?: number; } interface GeneralExportOptions { exportPattern?: string; } interface PropertyExportOptions { escapeQuotes?: EscapeQuotes; exportPattern?: string; escapeSpecialCharacters?: 0 | 1; } interface JavaScriptExportOptions { exportPattern?: string; exportQuotes?: ExportQuotes; } interface MdExportOptions { exportPattern?: string; strongMarker?: 'asterisk' | 'underscore'; emphasisMarker?: 'asterisk' | 'underscore'; unorderedListBullet?: 'asterisks' | 'plus' | 'dash'; tableColumnWidth?: 'consolidate' | 'evenly_distribute_cells'; frontMatterQuotes?: 'auto' | 'single' | 'double'; } interface DocxFileExportOptions { exportPattern?: string; allowWordStyleOptimization?: boolean; translateExcelExcludeColors?: boolean; } enum EscapeQuotes { ZERO = 0, ONE = 1, TWO = 2, THREE = 3 } enum ExportQuotes { SINGLE = "single", DOUBLE = "double" } type UpdateOption = 'clear_translations_and_approvals' | 'keep_translations' | 'keep_translations_and_approvals'; interface ReviewedSourceFilesBuild { id: number; projectId: number; status: string; progress: number; attributes: ReviewedSourceFilesBuildAttributes; } interface ReviewedSourceFilesBuildAttributes { branchId: number | null; targetLanguageId: string; } interface BuildReviewedSourceFilesRequest { branchId?: number; } interface ListProjectBranchesOptions extends PaginationOptions { name?: string; orderBy?: string; } interface ListReviewedSourceFilesBuildOptions extends PaginationOptions { branchId?: number; } interface User { id: number; username: string; fullName: string; avatarUrl: string; } interface AssetReference { id: number; name: string; url: string; user: User; createdAt: string; mimeType: string; } interface AssetReferenceRequest { storageId: number; name: string; } interface DeleteOptions { respondAsync?: boolean; } interface DeletionJobAttributes { branchId?: number; directoryId?: number; fileId?: number; } interface DeletionJobStatus { identifier: string; status: 'created' | 'in_progress' | 'finished' | 'failed'; progress: number; attributes: DeletionJobAttributes; createdAt: string; updatedAt: string; startedAt: string; finishedAt: string; error: { message: string; } | null; } interface ListBranchesOptions extends PaginationOptions { filter: string; projectIds?: number[]; userId?: number; } interface ListDirectoriesOptions extends PaginationOptions { filter: string; projectIds?: number[]; userId?: number; } interface ListFilesOptions extends PaginationOptions { filter: string; projectIds?: number[]; userId?: number; } }