• Introduction
  • Web Service API
  • Callback service

    Show / Hide Table of Contents
    • Overview
    • Concepts
      • API functionality
      • Web Service technology
      • Security
      • Accessing the services
      • Error reporting
      • Synchronous and asynchronous API
      • Testing
      • Telemetry
    • Translation memory API
      • Overview
      • ITMService
      • Lookup, concordance
      • Import, export
      • API
        • ConcordanceRequest
        • GenericFault
        • HeavyResourceInfo
        • HeavyResourceUpdateInfo
        • ImportTMMetadataSchemeResultInfo
        • InlineTagStrictness
        • InvalidSessionIdFault
        • ITMService
        • LookupSegmentRequest
        • NoLicenseFault
        • RequestXmlFormatFault
        • ResourceInfo
        • ResourceListFilter
        • ResourceUpdateInfo
        • ResultInfo
        • TMEngineType
        • TMFault
        • TMInfo
        • TMListFilter
        • TMOptimizationPreference
        • TMUpdateInfo
        • TmxImportResult
        • TmxImportSettings
        • UnauthorizedAccessFault
        • UnexpectedFault
    • Term bases API
      • Overview
      • ITBService
      • Import, export
        • CSV
        • TBX
        • MultiTerm
      • API
        • CreateQTermTBFromTBXSettings
        • CreateQTermTBFromTBXTaskResult
        • CSVExportSettings
        • CSVExportTaskResult
        • CSVImportIntoExistingSettings
        • CSVImportIntoExistingTaskResult
        • CSVImportResult
        • CSVImportSettings
        • GenericFault
        • HeavyResourceInfo
        • HeavyResourceUpdateInfo
        • ITasksService
        • ITBService
        • QTermTBImportSettings
        • ResourceInfo
        • ResourceListFilter
        • ResourceUpdateInfo
        • ResultInfo
        • TaskDoesNotExistFault
        • TaskInfo
        • TaskNotFinishedFault
        • TaskResult
        • TaskStatus
        • TBCaseSensitivity
        • TBCloneInfo
        • TBFilter
        • TBFilterLangMode
        • TBInfo
        • TBMatching
        • TBNewTermDefaultForLanguage
        • TBUpdateInfo
        • TBXExportOptions
        • TBXExportTaskResult
        • TBXImportIntoExistingSettings
        • TBXImportResults
        • TBXImportSettings
        • TBXImportTaskResult
        • UnexpectedFault
    • LiveDocs API
      • Overview
      • ILiveDocsService
      • Alignment
      • API
        • AlignmentOptions
        • AlignmentResultInfo
        • CorpusIndexingOptions
        • CorpusIndexingSchedule
        • CorpusInfo
        • CorpusListFilter
        • CorpusUpdateInfo
        • DocumentForAlignment
        • GenericFault
        • HeavyResourceInfo
        • HeavyResourceUpdateInfo
        • ILiveDocsService
        • ImportBinaryFileIntoLiveDocsOptions
        • ImportFileIntoLiveDocsOptions
        • ImportFileIntoLiveDocsResultInfo
        • ImportLiveDocsXliffFileIntoLiveDocsOptions
        • ImportMonoOrBilingualFileIntoLiveDocsOptions
        • ResourceInfo
        • ResourceListFilter
        • ResourceUpdateInfo
        • ResultInfo
        • ResultStatus
        • UnexpectedFault
    • Light resources API
      • Overview
      • IResourceService
      • API
        • ExpectedFault
        • FilterConfigResourceInfo
        • FilterNames
        • GenericFault
        • IResourceService
        • LightResourceInfo
        • LightResourceInfoWithLang
        • LightResourceListFilter
        • PathRuleResourceInfo
        • PathRuleType
        • ProjectTemplateResourceInfo
        • ResourceInfo
        • ResourceType
        • ResourceUpdateInfo
        • UnexpectedFault
    • Server project API
      • Overview
      • User assignment
      • Omniscien Technologies services
      • IServerProjectService
      • API
        • AddProjectLanguageFault
        • AddProjectLanguageTBHandlingBehavior
        • AnalysisAsCSVResult
        • AnalysisAsCSVResultForLang
        • AnalysisOptions
        • AnalysisReportCounts
        • AnalysisReportForDocument
        • AnalysisReportInfo
        • AnalysisReportItem
        • AnalysisResultForLang
        • AnalysisResultInfo
        • AsiaOnlineBeginTranslationResultInfo
        • AsiaOnlineDomainCombination
        • AsiaOnlineGetDomainCombinationsResultInfo
        • AsiaOnlineGetLanguagePairCodeResultInfo
        • AsiaOnlineGetProjectIdsResultInfo
        • AsiaOnlineTranslateOptions
        • AsiaOnlineTranslationResultInfo
        • AsiaOnlineTranslationStatus
        • AssignmentChangeHistoryItemInfo
        • AutomatedActionStartedHistoryItemInfo
        • AutomatedActionStartedHistoryItemInfo.AutomatedActionTypes
        • AutoSplitJoinSettings
        • BilingualDocFormat
        • CannotStartOperationFault
        • ConfirmAndUpdateDocError
        • ConfirmAndUpdateOptions
        • ConfirmAndUpdateResultInfo
        • ConfirmAndUpdateSegmentStatuses
        • ConfirmAndUpdateTaskResult
        • ConfirmAndUpdateTMBehaviors
        • ConfirmAndUpdateUserNameBehaviors
        • CorpusLanguagePair
        • CreateDeliveryResult
        • CreateStatisticsOnDocumentsRequest
        • CreateStatisticsOnProjectRequest
        • CreateStatisticsRequestBase
        • CustomPreTranslateParameter
        • DeadlineChangeHistoryItemInfo
        • DeliverDocumentFault
        • DeliverDocumentRequest
        • DistanceMeasurementMode
        • DocDeliveryResult
        • DocDeliveryResultInfo
        • DocumentBilingualImportHistoryItemInfo
        • DocumentDeliverHistoryItemInfo
        • DocumentExportOptions
        • DocumentHistoryItemInfo
        • DocumentHistoryItemType
        • DocumentHistoryRequest
        • DocumentImportHistoryItemInfo
        • DocumentReturnHistoryItemInfo
        • DocumentRowsLockedHistoryItemInfo
        • DocumentRowsLockedHistoryItemInfo.LockModes
        • DocumentSlicingHistoryItemInfo
        • DocumentSnapshotCreatedHistoryItemInfo
        • DocumentStatus
        • DocumentXTranslationHistoryItemInfo
        • EditDistanceCsvResult
        • EditDistanceReportInfo
        • EditDistanceStatisticsOptions
        • ExpectedFinalStateAfterXTranslate
        • ExpectedSourceStateBeforeXTranslate
        • FileResultInfo
        • FirstAcceptAcceptHistoryItemInfo
        • FirstAcceptAssignHistoryItemInfo
        • FirstAcceptDeclineHistoryItemInfo
        • FirstAcceptFailedHistoryItemInfo
        • FirstAcceptStatus
        • FirstAcceptUserDecision
        • FragmentAssemblySettings
        • FuzzyEditDistanceReport
        • FuzzyEditDistanceResult
        • FuzzyEditDistanceResultForDocument
        • FuzzyEditDistanceResultForLang
        • FuzzyEditDistanceTaskResult
        • GenericFault
        • GroupSourcingAssignHistoryItemInfo
        • GroupSourcingDocumentDeliverHistoryItemInfo
        • ImportImageLocalizationPackResultInfo
        • ImportTranslationDocumentOptions
        • IServerProjectService
        • LevenshteinEditDistanceReport
        • LevenshteinEditDistanceResult
        • LevenshteinEditDistanceResultForDocument
        • LevenshteinEditDistanceResultForLang
        • LevenshteinEditDistanceTaskResult
        • ListServerProjectTranslationDocument2Options
        • ListServerProjectTranslationDocumentSliceOptions
        • ListTranslationDocumentAssignmentsOptions
        • MatchCoverageType
        • NewRevisionScenarioOptions
        • PackageContentDocument
        • PackageContentInfo
        • PackageCreationNotAllowedFault
        • PackageDeliveryOptions
        • PackageDeliveryResult
        • PackageDeliveryResultInfo
        • PackageImportOptions
        • PackageInfo
        • PostTransAnalysisReportForDocument
        • PostTransAnalysisReportForUser
        • PostTransAnalysisReportItem
        • PostTranslationAnalysisAsCSVResult
        • PostTranslationAnalysisAsCSVResultForLang
        • PostTranslationAnalysisOptions
        • PostTranslationAnalysisReportInfo
        • PostTranslationAnalysisResultInfo
        • PostTranslationAnalysisTaskResult
        • PostTranslationReportCounts
        • PostTranslationResultForLang
        • PreparePackageResultInfo
        • PreTransFilter
        • PretranslateCopySourceToTargetBehavior
        • PretranslateCopySourceToTargetConditions
        • PretranslateExpectedFinalTranslationState
        • PretranslateLookupBehavior
        • PretranslateOptions
        • PreTranslateProblem
        • PretranslateStateToConfirmAndLock
        • PreTranslateTaskResult
        • PreviewCreation
        • ProjectLaunchedHistoryItemInfo
        • QAReport
        • QAReportForDocument
        • QAReportTypes
        • ReconsolidateDocumentFault
        • ReimportDocumentOptions
        • RenameProjectFault
        • ResultInfo
        • ResultStatus
        • RtfBilingualExportOptions
        • RunQAGetReportOptions
        • RunQATaskResult
        • ServerProjectAddLanguageInfo
        • ServerProjectCommunicationSettings
        • ServerProjectConfidentialitySettings
        • ServerProjectCorporaAssignments
        • ServerProjectCreateInfo
        • ServerProjectDesktopDocsCreateInfo
        • ServerProjectInfo
        • ServerProjectListFilter
        • ServerProjectNotificationSettings
        • ServerProjectPackageResourceHandlingOptions
        • ServerProjectResourceAssignment
        • ServerProjectResourceAssignmentDetails
        • ServerProjectResourceAssignmentForResourceType
        • ServerProjectResourcesInPackages
        • ServerProjectRoles
        • ServerProjectStatus
        • ServerProjectTBAssignments
        • ServerProjectTBsForTargetLang
        • ServerProjectTMAssignmentDetails
        • ServerProjectTMAssignmentsForTargetLang
        • ServerProjectTranslationDocBasicInfo
        • ServerProjectTranslationDocInfo
        • ServerProjectTranslationDocInfo2
        • ServerProjectTranslationDocSliceInfo
        • ServerProjectTranslationDocumentsDifferentLanguageTranslations
        • ServerProjectTranslationDocumentsFromSameSourceFile
        • ServerProjectTranslationDocumentUserAssignments
        • ServerProjectTranslationDocumentWorkflowStatusChange
        • ServerProjectUpdateInfo
        • ServerProjectUserInfo
        • ServerProjectUserInfoHeader
        • SetDocumentWorkflowStatusFault
        • SetTranslationDocumentAssignmentsOptions
        • SliceDocumentFault
        • SliceDocumentRequest
        • SlicingMeasurementUnit
        • StatisticsAlgorithm
        • StatisticsOptions
        • StatisticsResultForLang
        • StatisticsResultFormat
        • StatisticsResultInfo
        • StatisticsTaskResult
        • SubvendorAssignDeadlineChangeHistoryItemInfo
        • SubvendorAssignHistoryItemInfo
        • TemplateBasedProjectCreateInfo
        • TemplateBasedProjectCreationFault
        • TemplateBasedProjectCreationInvalidMetaFault
        • TemplateBasedProjectCreationResultInfo
        • TMLanguagePair
        • TranslationDocExportResultInfo
        • TranslationDocImportResultInfo
        • TranslationDocumentAssigneeInfo
        • TranslationDocumentAssignmentFault
        • TranslationDocumentAssignmentInfo
        • TranslationDocumentAssignmentResultInfo
        • TranslationDocumentAssignments
        • TranslationDocumentAssignmentType
        • TranslationDocumentDetailedAssignmentInfo
        • TranslationDocumentDetailedAssignments
        • TranslationDocumentDetailedFirstAcceptAssignmentInfo
        • TranslationDocumentDetailedGroupSourcingAssignmentInfo
        • TranslationDocumentDetailedRoleAssignmentInfo
        • TranslationDocumentDetailedSingleUserAssignmentInfo
        • TranslationDocumentDetailedSubvendorAssignmentInfo
        • TranslationDocumentFirstAcceptAssignmentInfo
        • TranslationDocumentFirstAcceptUserInfo
        • TranslationDocumentGroupSourcingAssignmentInfo
        • TranslationDocumentGroupSourcingUserInfo
        • TranslationDocumentNoUserAssignmentInfo
        • TranslationDocumentRoleAssignmentInfo
        • TranslationDocumentRoleAssignmentResultInfo
        • TranslationDocumentSingleUserAssignmentInfo
        • TranslationDocumentSubvendorAssignmentInfo
        • TranslationDocumentUserRoleAssignment
        • TranslationDocumentUserRoleAssignmentDetails
        • TurnOffAutoPilotFault
        • TwoColumnRtfBilingualExportOptions
        • UnexpectedFault
        • UpdateWithTableRtfOptions
        • UserInfoHeader
        • WordCountMode
        • WorkflowStatus
        • WorkflowStatusChangeHistoryItemInfo
        • WorkingTMsDeletedHistoryItemInfo
        • WrapUpProjectFault
        • XliffBilingualExportOptions
        • XTranslateDocInfo
        • XTranslateDocumentResult
        • XTranslateOptions
        • XTranslateResultInfo
        • XTranslateScenario
        • XTranslateTaskResult
    • Security API
      • Overview
      • Users, groups, permissions
      • Session management
      • ISecurityService
      • API
        • GenericFault
        • GroupInfo
        • ISecurityService
        • ObjectPermission
        • UnexpectedFault
        • UserInfo
        • UserPackageWorkflowType
        • WeakPasswordFault
    • File upload/download API
      • Overview
      • IFileManagerService
      • API
        • GenericFault
        • IFileManagerService
        • UnexpectedFault
    • License (ELM) API
      • Overview
      • IELMService
      • API
        • ELMAssignment
        • ELMAssignmentType
        • ELMFault
        • ELMPermission
        • ELMPoolInfo
        • ELMProduct
        • ELMProjectPermission
        • GenericFault
        • IELMService
        • UnexpectedFault
    • Tasks API
      • Overview
      • ITasksService
      • API
        • GenericFault
        • ITasksService
        • TaskDoesNotExistFault
        • TaskInfo
        • TaskNotFinishedFault
        • TaskResult
        • TaskStatus
        • UnexpectedFault
    • Changelog

    File upload/download API

    API operations often involve the transfer of large files (translation documents and bilinguals). Therefore, a unified and reliable transfer method has been introduced, that can be used throughout the API, involving chunked transfer and an option to handle compressed data. The file transfer API provides the following functionality:

    • Chunked file upload, optionally zipped. For example, if a translation document is to be imported to a server project, then it has to be uploaded first by using file transfer upload operations.
    • Chunked file download, optionally zipped. For example, if a translation document is exported, then the resulting file is created and temporarily stored on the server. Then the file can be downloaded by using file transfer download operations.

    Demo code in C# for using the file manager service:

    class FileManager
    {
        /// <summary>
        /// Uploads a file given by its path.
        /// </summary>
        /// <param name="fmService">The IFileManagerService service proxy.</param>
        /// <param name="filePath">The file path.</param>
        /// <returns>The Guid of the uploaded file.</returns>
        public static Guid UploadFile(IFileManagerService fmService, string filePath)
        {
            FileStream fileStream = null;
            Guid fileGuid = Guid.Empty;
            const int chunkSize = 500000;
            byte[] chunkBytes = new byte[chunkSize];
            byte[] dataToUpload;
            int bytesRead;
     
            try
            {
                // Open souce file stream
                fileStream = File.OpenRead(filePath);
     
                // Begin chunked upload
                fileGuid = fmService.BeginChunkedFileUpload(filePath, false);
     
                // Upload chunks
                while ((bytesRead = fileStream.Read(chunkBytes, 0, chunkSize)) != 0)
                {
                    if (bytesRead == chunkSize)
                        dataToUpload = chunkBytes;
                    else
                    {
                        // If we are at the end, we want to upload only 
                        // the bytes read from the stream.
                        dataToUpload = new byte[bytesRead];
                        Array.Copy(chunkBytes, dataToUpload, bytesRead);
                    }
                    fmService.AddNextFileChunk(fileGuid, dataToUpload);
                }
     
                return fileGuid;
            }
            finally
            {
                if (fileStream != null)
                    fileStream.Close();
     
                // End chunked upload
                if (fileGuid != Guid.Empty)
                    fmService.EndChunkedFileUpload(fileGuid);
     
            }
        }
     
        /// <summary>
        /// Downloads a file given by its Guid.
        /// </summary>
        /// <param name="fmService">The IFileManagerService service proxy.</param>
        /// <param name="fileGuid">The file GUID.</param>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="targetdir">The target directory.</param>
        public static void DownloadFile(IFileManagerService fmService, Guid fileGuid, 
            out string fileName, string targetdir)
        {
            FileStream fileStream = null;
            Guid sessionGuid = Guid.Empty;
            const int chunkSize = 500000;
            byte[] chunkBytes;
            int fileSize;
            int fileBytesLeft;
     
            try
            {
                sessionGuid = fmService.BeginChunkedFileDownload(
                    fileGuid,
                    false,
                    out fileName,
                    out fileSize);
                fileStream = new FileStream(Path.Combine(targetdir, fileName),
                    FileMode.Create);
                fileBytesLeft = fileSize;
     
                while (fileBytesLeft > 0)
                {
                    chunkBytes = fmService.GetNextFileChunk(sessionGuid, chunkSize);
                    fileStream.Write(chunkBytes, 0, chunkBytes.Length);
                    fileBytesLeft -= chunkBytes.Length;
                }
            }
            finally
            {
                if (fileStream != null)
                    fileStream.Close();
     
                try
                {
                    if (sessionGuid != Guid.Empty)
                        fmService.EndChunkedFileDownload(sessionGuid);
     
                    // We no longer need the file, delete it on the server.
                    fmService.DeleteFile(fileGuid);
                }
                catch (Exception e)
                {
                    Log.WriteVerbose(e.ToString());
                    // We are not interested in these errors. And don't want the 
                    // original error to be hidden by these exceptions.
                }
            }
        }
    }
    
    Back to top memoQ Server API documentation