smartcat / smartcat-api
SmartCAT API 的 PHP 客户端 https://smartcat.ai/api/methods/
Requires
- php: ^7.4 | ^8.0
- ext-json: *
- guzzlehttp/guzzle: ^7.8
- guzzlehttp/psr7: ^2.0
- nesbot/carbon: ^2.42
- symfony/options-resolver: ^5.4
- symfony/serializer: ^2.0 || ^3.0 || ^4.0 || ^5.0
- dev-master
- 3.0.0
- 2.2.2
- 2.2.1
- 2.2.0
- v2.1.x-dev
- 2.1.9
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- v2.0.x-dev
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- v1.x-dev
- 1.7.3
- 1.7.2
- 1.7.0
- 1.6.0
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- dev-SUPPORT-5497
- dev-CSMS-1032-v2
This package is auto-updated.
Last update: 2024-09-25 12:37:46 UTC
README
如何使用
- 安装 composer
- composer require smartcat/smartcat-api
- composer install
use SmartCat\Client\SmartCat; $sc=new SmartCat($login, $password);
账户
获取账户详情
GET /api/integration/v1/account
$sc->getAccountManager()->accountGetAccountInfo();
获取账户可用的机器翻译引擎
GET /api/integration/v1/account/mtengines
$sc->getAccountManager()->accountGetMTEnginesForAccount();
获取账户可用的语言服务提供商(LSP)服务](https://smartcat.com/api/methods/#!/Account/Account_GetLSPServicesForAccount)
GET /api/integration/v1/account/lsp/services
$sc->getAccountManager()->accountGetLSPServicesForAccount();
获取可分配的任务执行者(我的团队自由职业者或内部账户用户)
GET /api/integration/v1/account/assignableExecutives
$sc->getAccountManager()->accountGetAssignableExecutives();
回调
重置通知接收配置 DELETE /api/integration/v1/callback
$sc->getCallbackManager()->callbackDelete()
读取账户通知接收配置 GET /api/integration/v1/callback
$sc->getCallbackManager()->callbackGet()
创建和更新通知接收配置 POST /api/integration/v1/callback
$callback=new CallbackPropertyModel(); $callback->setUrl('https://smartcat.ai'); $res=$sc->getCallbackManager()->callbackUpdate($callback);
读取最后的发送错误(最多 100 个) GET /api/integration/v1/callback/lastErrors
$sc->getCallbackManager()->callbackGetLastErrors(['limit'=>$limit])
客户端
创建一个指定名称的客户端并返回 ID
如果客户端已存在,则仅返回 ID。
POST /api/integration/v1/client/create
$clientId = $sc->getClientManager()->clientCreateClient('Test client');
获取账户中指定客户端的详细信息
GET /api/integration/v1/client/{clientId}
$client = $sc->getClientManager()->clientGetClient($clientId);
为指定客户设置指定的网络费率模型
PUT /api/integration/v1/client/{clientId}/set
$client = $sc->getClientManager()->clientSetClientNetRate($clientId, ['netRateId' => $netRateId]);
目录
接收指定目录 GET /api/integration/v1/directory
$sc->getDirectoriesManager()->directoriesGet(['type'=>'projectStatus'])
获取账户支持的解析格式
GET /api/integration/v1/directory/formats
$sc->getDirectoriesManager()->directoriesGetSupportedFormatsForAccount();
文档
删除一个或多个文档 DELETE /api/integration/v1/document
$sc->getDocumentManager()->documentDelete(['documentIds'=>['id1','id2']])
接收文档模型 GET /api/integration/v1/document
$sc->getDocumentManager()->documentGet(['documentId'=>$docId])
更新分配的文档 PUT /api/integration/v1/document/update
$bilingualFileImportSettings = new BilingualFileImportSettingsModel(); $bilingualFileImportSettings ->setConfirmMode('none') ->setLockMode('none') ->setTargetSubstitutionMode('all'); $updateDocumentModel = new UploadDocumentPropertiesModel(); $updateDocumentModel->setBilingualFileImportSettings($bilingualFileImportSettings); $res = $sc->getDocumentManager()->documentUpdate([ 'documentId' => $docId, 'updateDocumentModel' => $updateDocumentModel, 'uploadedFile' => [ 'fileContent' => fopen(__DIR__ . '\Resources\File2_EN.docx', 'r'), 'fileName' => 'File2_EN.docx' ] ]);
重命名分配的文档 PUT /api/integration/v1/document/rename
$sc->getDocumentManager()->documentRename(['documentId'=>$docId,'name'=>'New file name'])
使用翻译文件翻译指定的文档 PUT /api/integration/v1/document/translate
$sc->getDocumentManager()->documentTranslate([ 'documentId'=>$docId, 'translationFile'=>[ 'filePath'=>'file path', 'fileName'=>'file name' ] ])
导入包含文档翻译的 xliff 文件
PUT /api/integration/v1/document/translateWithXliff
$sc->getDocumentManager()->documentTranslateWithXliff([ 'documentId' => $docId, 'confirmTranslation' => true, 'overwriteUpdatedSegments' => true, 'translationFile' => [ 'filePath' => 'file path', 'fileName' => 'file.xliff' ] ]);
接收添加文档翻译的状态 GET /api/integration/v1/document/translate/status
$sc->getDocumentManager()->documentGetTranslationStatus(['documentId'=>$docId])
获取翻译导入结果的详细报告
GET /api/integration/v1/document/translate/result
$sc->getDocumentManager()->documentGetTranslationsImportResult(['documentId' => $docsId]);
获取统计数据
GET /api/integration/v1/document/statistics
$sc->getDocumentManager()->documentGetStatistics(['documentId' => $docsId]);
根据单词数量将文档分割成相等的部分,并将每个部分分配给一位自由职业者 POST /api/integration/v1/document/assignFreelancers
$sc->getDocumentManager()->documentAssignFreelancersToDocument( ['Abbyyaolid1','Abbyyaolid2'], [ 'documentId' => $documentId, 'stageNumber' => $stageNumber ] )
文档导出
请求文档导出(-s) POST /api/integration/v1/document/export
$sc->getDocumentExportManager()->documentExportRequestExport(['documentIds'=>['documenId1','documentId2'])
下载导出结果 GET /api/integration/v1/document/export/{taskId}
$sc->getDocumentExportManager()->documentExportDownloadExportResult($taskId);
术语表
获取术语表集
GET /api/integration/v1/glossaries
$res = $sc->getGlossaryManager()->glossaryGetGlossaries();
发票
为自由职业者创建可支付项
POST /api/integration/v1/invoice/job
$importJobModel = new ImportJobModel(); $importJobModel->setFreelancerId($freelanceId) ->setServiceType('translation') ->setJobDescription('Test invoice') ->setUnitsType('Any text') ->setUnitsAmount(10) ->setPricePerUnit(1) ->setCurrency('usd'); $res=$sc->getInvoiceManager()->invoiceImportJob($importJobModel);
占位符格式API
获取当前账户中所有可用的占位符格式
GET /api/integration/v1/placeholders
$res = $sc->getPlaceholderFormatApiManager()->placeholderFormatApiGetPlaceholderFormats();
为当前账户保存一组占位符格式
PUT /api/integration/v1/placeholders
$placeHolder1 = new PlaceholderFormatModel(); $placeHolder1->setRegex($regEx1); $placeHolder2 = new PlaceholderFormatModel(); $placeHolder2->setRegex($regEx2); $res = $sc->getPlaceholderFormatApiManager()->placeholderFormatApiUpdatePlaceholderFormats([$placeHolder1, $placeHolder2]);
验证指定的占位符格式
GET /api/integration/v1/placeholders/validate
$res = $this->sc->getPlaceholderFormatApiManager()->placeholderFormatApiValidatePlaceholderFormat(['format' => 'Stable\:(\s+)(.+)[\r|]\n']);
项目
删除项目 DELETE /api/integration/v1/project/{projectId}
$sc->getProjectManager()->projectDelete($projectId)
获取项目模型 GET /api/integration/v1/project/{projectId}
sc->getProjectManager()->projectGet($projectId)
使用ID更新项目
PUT /api/integration/v1/project/{projectId}
获取账户中所有项目的列表 GET /api/integration/v1/project/list
$sc->getProjectManager()->projectGetAll()
获取账户中所有项目的列表(v2,带偏移量)
GET /api/integration/v2/project/list
$sc->getProjectManager()->projectsGetWithOffset($offset = 0, $limit = 100)
获取统计信息和项目价值
GET /api/integration/v2/project/{projectId}/statistics
$sc->getProjectManager()->projectGetProjectStatistics($projectId); do { sleep(5); $res = $sc->getProjectManager()->projectGetProjectStatistics($projectId); } while(!is_array($res));
获取项目完成部分的统计信息
GET /api/integration/v1/project/{projectId}/completedWorkStatistics
$res = $sc->getProjectManager()->projectGetCompletedWorkStatistics($projectId);
获取项目中连接的翻译记忆库的列表
GET /api/integration/v1/project/{projectId}/translationmemories
$res = $sc->getProjectManager()->projectGetProjectTranslationMemories($projectId);
重写连接的翻译记忆库——所有目标语言使用相同的翻译记忆库集
POST /api/integration/v1/project/{projectId}/translationmemories
$translationMemoryForProjectModel = new TranslationMemoryForProjectModel(); $translationMemoryForProjectModel->setId($tmId); $translationMemoryForProjectModel->setIsWritable(true); $translationMemoryForProjectModel->setMatchThreshold(100); $res = $sc->getProjectManager()->projectSetTranslationMemoriesForWholeProject($projectId, [$translationMemoryForProjectModel]);
获取为项目启用的术语表集
GET /api/integration/v1/project/{projectId}/glossaries
$res = $sc->getProjectManager()->projectGetGlossaries($projectId);
为项目启用一组术语表
PUT /api/integration/v1/project/{projectId}/glossaries
$res = $this->sc->getProjectManager()->projectSetGlossaries($projectId, [$glossaryId1, $glossaryId2]);
开始为项目生成统计信息
POST /api/integration/v1/project/{projectId}/statistics/build
$sc->getProjectManager()->projectBuildStatistics($this->prj->getId());
重写连接的翻译记忆库——每个目标语言都有其自己的翻译记忆库集
POST /api/integration/v1/project/{projectId}/translationmemories/bylanguages
$translationMemoryForProjectModel = new TranslationMemoryForProjectModel(); $translationMemoryForProjectModel->setId($tmId); $translationMemoryForProjectModel->setIsWritable(true); $translationMemoryForProjectModel->setMatchThreshold(100); $tm = new TranslationMemoriesForLanguageModel(); $tm->setLanguage('en'); $tm->setTranslationMemories([$translationMemoryForProjectModel]); $res = $sc->getProjectManager()->projectSetProjectTranslationMemoriesByLanguages($projectId, [$tm]);
创建项目 POST /api/integration/v1/project/create
$prjCreate = new CreateProjectWithFilesModel(); $prjCreate->setName('Test project'); $prjCreate->setDescription('Test project'); $prjCreate->setSourceLanguage('ru'); $prjCreate->setTargetLanguages(['en']); $prjCreate->setAssignToVendor(false); $prjCreate->setUseMT(false); $prjCreate->setPretranslate(false); $prjCreate->setAutoPropagateRepetitions(false); $prjCreate->setIsForTesting(true); $prjCreate->setWorkflowStages(['translation']); $prjCreate->attacheFile(fopen(__DIR__.'\Resources\File1_EN.docx'),'File1_EN.docx'); $sc->getProjectManager()->projectCreateProjectWithFiles($prjCreate);
向项目中添加新文档 POST /api/integration/v1/project/document
$bilingualFileImportSettings = new BilingualFileImportSettingsModel(); $bilingualFileImportSettings ->setConfirmMode('none') ->setLockMode('none') ->setTargetSubstitutionMode('all'); $documentModel = new CreateDocumentPropertyWithFilesModel(); $documentModel->setBilingualFileImportSettings($bilingualFileImportSettings); $documentModel->attachFile(fopen(__DIR__ . '\Resources\File2_EN.docx'), 'File2_EN.docx'); $res = $sc->getProjectManager()->projectAddDocument([ 'documentModel' => [$documentModel], 'projectId' => $projectId ]);
如果您想设置拆分设置,则应设置拆分算法。例如
$bilingualFileImportSettings = new BilingualFileImportSettingsModel(); $bilingualFileImportSettings ->setConfirmMode('none') ->setLockMode('none') ->setTargetSubstitutionMode('all'); $disassembleSettings = (new DisassembleSettingsModel()) ->setTranslatableAttributes(['img'=>['data-caption']]); $documentModel = new CreateDocumentPropertyWithFilesModel(); $documentModel->setDisassembleAlgorithmName('html'); $documentModel->setDisassembleSettings($disassembleSettings); $documentModel->setBilingualFileImportSettings($bilingualFileImportSettings); $documentModel->attachFile(fopen(__DIR__ . '\Resources\File2_EN.docx'), 'File2_EN.docx'); $res = $sc->getProjectManager()->projectAddDocument([ 'documentModel' => [$documentModel], 'projectId' => $projectId ]);
已弃用
$sc->getProjectManager()->projectAddDocument([ 'projectId'=>$projectId, 'file' => [ 'filePath'=>'path to file', 'fileName'=>'File name' ] ]);
向项目中添加新目标语言 POST /api/integration/v1/project/language
$sc->getProjectManager()->projectAddLanguage(['projectId'=>$projectId,'targetLanguage'=>'ja']);
为项目中文档的特定阶段分配翻译者组 PUT /api/integration/v1/project/{projectId}/assignGroupToWorkflowStage
$sc->getProjectManager()->projectAssignGroupToWorkflowStage($projectId,['groupName'=>'Administrators','workflowStage'=>'translation'])
取消项目 POST /api/integration/v1/project/cancel
$sc->getProjectManager()->projectCancelProject(['projectId'=>$projectId])
恢复项目 POST /api/integration/v1/project/restore
$sc->getProjectManager()->projectRestoreProject(['projectId'=>$projectId])
完成所有项目文档的工作流程。项目状态将变为已完成。
POST /api/integration/v1/project/restore
$sc->getProjectManager()->projectCompleteProject(['projectId' => $this->prj->getId()]);
翻译记忆
删除TM
DELETE /api/integration/v1/translationmemory/{tmId}
$sc->getTranslationMemoriesManager()->translationMemoriesRemoveTranslationMemory($tmId)
获取TM详细信息
GET /api/integration/v1/translationmemory/{tmId}
$sc->getTranslationMemoriesManager()->translationMemoriesGetMetaInfo($tmId);
将TMX文件导入TM
POST /api/integration/v1/translationmemory/{tmId}
$sc->getTranslationMemoriesManager()->translationMemoriesImport( $tmId, [ 'replaceAllContent' => 'true', 'tmxFile' => [ 'filePath' => __DIR__ . '\Resources\Space.tmx' ] ] );
获取帐户可用的TM集合
GET /api/integration/v1/translationmemory
$thirstRes = $sc->getTranslationMemoriesManager()->translationMemoriesGetTranslationMemoriesBatch([ 'lastProcessedId' => '', 'batchSize' => 10 ]); $last = array_pop($thirstRes); $secondRes = $sc->getTranslationMemoriesManager()->translationMemoriesGetTranslationMemoriesBatch([ 'lastProcessedId' => $last->getId(), 'batchSize' => $count ]);
创建一个空的TM
POST /api/integration/v1/translationmemory
$tm = new CreateTranslationMemoryModel(); $name = 'PHP Unit ' . date('U'); $tm->setName($name); $tm->setSourceLanguage('ru'); $tm->setTargetLanguages(['en']); $tm->setDescription("Description: $name"); $tmId = $sc->getTranslationMemoriesManager()->translationMemoriesCreateEmptyTM($tm);
获取TMX导入的任务集合
GET /api/integration/v1/translationmemory/task
$sc->getTranslationMemoriesManager()->translationMemoriesGetPendingTasks();
设置TM所需的目标语言数组
PUT /api/integration/v1/translationmemory/{tmId}/target
$sc->getTranslationMemoriesManager()->translationMemoriesSetTMTargetLanguages($tmId, ["en", "es"]);
从TM导出TMX文件
GET /api/integration/v1/translationmemory/{tmId}/file
$sc->getTranslationMemoriesManager()->translationMemoriesExportFile($tmId, ['withTags' => true])
从给定的TM获取匹配项
POST /api/integration/v1/translationmemory/matches
$tmMatch = new TmMatchesRequest(); $tmMatch->setSourceLanguage('en'); $tmMatch->setTargetLanguage('ru'); $segmentModel = new SegmentModel(); $segmentModel->setText('Test text message'); $segmentModel->setPrevContext(''); $segmentModel->setNextContext(''); $segmentModel->setTags([]); $tmMatch->setSegmentModel($segmentModel); $sc->getTranslationMemoriesManager()->translationMemoriesGetTMTranslations($tmMatch, ['tmId' => $tmId]);
删除给定的导入任务
DELETE /api/integration/v1/translationmemory/task/{taskId}
$sc->getTranslationMemoriesManager()->translationMemoriesRemoveSpecificImportTask($last->getId())
用户
使用指定参数创建新用户
POST /api/integration/v1/user
$user = new CreateUserRequest(); $user->setEmail('test@test.com') ->setFirstName('FirstName') ->setLastName('LastName') ->setExternalId('my-external-id') ->setRightsGroup('executive'); $res = $sc->getUserManager()->userCreate($user);
删除用户
DELETE /api/integration/v1/user/{accountUserId}
$sc->getUserManager()->userDelete($smartcatAccountUserId);
获取用户模型
GET /api/integration/v1/user/{accountUserId}
$res = $sc->getUserManager()->userGet($smartcatAccountUserId);
更新用户数据
PUT /api/integration/v1/user/{accountUserId}
$updateModel = new UpdateUserRequest(); $updateModel->setFirstName($newName); $sc->getUserManager()->userUpdate($smartcatAccountUserId, $updateModel);
通过其外部ID获取用户
GET /api/integration/v1/user/external
$res = $sc->getUserManager()->userGetExternal(['id' => $externalId]);