PHP code example of smartcat / smartcat-api

1. Go to this page and download the library: Download smartcat/smartcat-api library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

smartcat / smartcat-api example snippets

 
use SmartCat\Client\SmartCat;

$sc=new SmartCat($login, $password);

 $sc->getAccountManager()->accountGetAccountInfo();
 

  $sc->getAccountManager()->accountGetMTEnginesForAccount();
  

  $sc->getAccountManager()->accountGetLSPServicesForAccount();
  

  $sc->getAccountManager()->accountGetAssignableExecutives();
  

 $sc->getCallbackManager()->callbackDelete()
 

 $sc->getCallbackManager()->callbackGet()
 

 $callback=new CallbackPropertyModel();
 $callback->setUrl('https://smartcat.ai');
 $res=$sc->getCallbackManager()->callbackUpdate($callback);
 

 $sc->getCallbackManager()->callbackGetLastErrors(['limit'=>$limit])
 

$clientId = $sc->getClientManager()->clientCreateClient('Test client');
 

$client = $sc->getClientManager()->clientGetClient($clientId);
 

$client = $sc->getClientManager()->clientSetClientNetRate($clientId, ['netRateId' => $netRateId]);
 

 $sc->getDirectoriesManager()->directoriesGet(['type'=>'projectStatus'])
 

$sc->getDirectoriesManager()->directoriesGetSupportedFormatsForAccount();
 

 $sc->getDocumentManager()->documentDelete(['documentIds'=>['id1','id2']])
 

 $sc->getDocumentManager()->documentGet(['documentId'=>$docId])
 

 $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'
     ]
 ]);
 

 $sc->getDocumentManager()->documentRename(['documentId'=>$docId,'name'=>'New file name'])
 

 $sc->getDocumentManager()->documentTranslate([
    'documentId'=>$docId,
    'translationFile'=>[
        'filePath'=>'file path',
        'fileName'=>'file name'
    ]
 ])
 

 $sc->getDocumentManager()->documentTranslateWithXliff([
     'documentId' => $docId,
     'confirmTranslation' => true,
     'overwriteUpdatedSegments' => true,
     'translationFile' => [
         'filePath' => 'file path',
         'fileName' => 'file.xliff'
     ]
 ]);
 

 $sc->getDocumentManager()->documentGetTranslationStatus(['documentId'=>$docId])
 

 $sc->getDocumentManager()->documentGetTranslationsImportResult(['documentId' => $docsId]);
 

 $sc->getDocumentManager()->documentGetStatistics(['documentId' => $docsId]);
 

 $sc->getDocumentManager()->documentAssignFreelancersToDocument(
   ['Abbyyaolid1','Abbyyaolid2'], 
   [
     'documentId' => $documentId, 
     'stageNumber' => $stageNumber
   ]
 )
 

 $sc->getDocumentExportManager()->documentExportRequestExport(['documentIds'=>['documenId1','documentId2'])
 

 $sc->getDocumentExportManager()->documentExportDownloadExportResult($taskId);
 

 $res = $sc->getGlossaryManager()->glossaryGetGlossaries();
 

 $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);
 

 $res = $sc->getPlaceholderFormatApiManager()->placeholderFormatApiGetPlaceholderFormats();
 

 $placeHolder1 = new PlaceholderFormatModel();
 $placeHolder1->setRegex($regEx1);
 $placeHolder2 = new PlaceholderFormatModel();
 $placeHolder2->setRegex($regEx2);
 $res = $sc->getPlaceholderFormatApiManager()->placeholderFormatApiUpdatePlaceholderFormats([$placeHolder1, $placeHolder2]);
 

 $res = $this->sc->getPlaceholderFormatApiManager()->placeholderFormatApiValidatePlaceholderFormat(['format' => 'Stable\:(\s+)(.+)[\r|]\n']);
 

 $sc->getProjectManager()->projectDelete($projectId)
 

 sc->getProjectManager()->projectGet($projectId)
 

 $sc->getProjectManager()->projectGetAll()
 

 $sc->getProjectManager()->projectsGetWithOffset($offset = 0, $limit = 100)
 

$sc->getProjectManager()->projectGetProjectStatistics($projectId);
do {
    sleep(5);
    $res = $sc->getProjectManager()->projectGetProjectStatistics($projectId);
} while(!is_array($res));
 

 $res = $sc->getProjectManager()->projectGetCompletedWorkStatistics($projectId);
 

 $res = $sc->getProjectManager()->projectGetProjectTranslationMemories($projectId);
 

 $translationMemoryForProjectModel = new TranslationMemoryForProjectModel();
 $translationMemoryForProjectModel->setId($tmId);
 $translationMemoryForProjectModel->setIsWritable(true);
 $translationMemoryForProjectModel->setMatchThreshold(100);
 $res = $sc->getProjectManager()->projectSetTranslationMemoriesForWholeProject($projectId, [$translationMemoryForProjectModel]);
 

 $res = $sc->getProjectManager()->projectGetGlossaries($projectId);
 

 $res = $this->sc->getProjectManager()->projectSetGlossaries($projectId, [$glossaryId1, $glossaryId2]);
 

 $sc->getProjectManager()->projectBuildStatistics($this->prj->getId());
 

 $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]);
 

 $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);

 $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'
     ]
 ]);
 

 $sc->getProjectManager()->projectAddLanguage(['projectId'=>$projectId,'targetLanguage'=>'ja']);
 

 $sc->getProjectManager()->projectAssignGroupToWorkflowStage($projectId,['groupName'=>'Administrators','workflowStage'=>'translation'])
 

 $sc->getProjectManager()->projectCancelProject(['projectId'=>$projectId])
 

 $sc->getProjectManager()->projectRestoreProject(['projectId'=>$projectId])
 

 $sc->getProjectManager()->projectCompleteProject(['projectId' => $this->prj->getId()]);
 

 $sc->getTranslationMemoriesManager()->translationMemoriesRemoveTranslationMemory($tmId)
 

 $sc->getTranslationMemoriesManager()->translationMemoriesGetMetaInfo($tmId);
 

$sc->getTranslationMemoriesManager()->translationMemoriesImport(
    $tmId,
    [
        'replaceAllContent' => 'true',
        'tmxFile' => [
            'filePath' => __DIR__ . '\Resources\Space.tmx'
        ]
    ]
);
 

$thirstRes = $sc->getTranslationMemoriesManager()->translationMemoriesGetTranslationMemoriesBatch([
    'lastProcessedId' => '',
    'batchSize' => 10
]);
$last = array_pop($thirstRes);
$secondRes = $sc->getTranslationMemoriesManager()->translationMemoriesGetTranslationMemoriesBatch([
    'lastProcessedId' => $last->getId(),
    'batchSize' => $count
]);
 

$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);
 

$sc->getTranslationMemoriesManager()->translationMemoriesGetPendingTasks();
 

$sc->getTranslationMemoriesManager()->translationMemoriesSetTMTargetLanguages($tmId, ["en", "es"]);
 

$sc->getTranslationMemoriesManager()->translationMemoriesExportFile($tmId, ['withTags' => true])
 

$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]);
 

$sc->getTranslationMemoriesManager()->translationMemoriesRemoveSpecificImportTask($last->getId())
 

 $user = new CreateUserRequest();
 $user->setEmail('[email protected]')
     ->setFirstName('FirstName')
     ->setLastName('LastName')
     ->setExternalId('my-external-id')
     ->setRightsGroup('executive');
 $res = $sc->getUserManager()->userCreate($user);
 

 $sc->getUserManager()->userDelete($smartcatAccountUserId);
 

 $res = $sc->getUserManager()->userGet($smartcatAccountUserId);
 

 $updateModel = new UpdateUserRequest();
 $updateModel->setFirstName($newName);
 $sc->getUserManager()->userUpdate($smartcatAccountUserId, $updateModel);
 

 $res = $sc->getUserManager()->userGetExternal(['id' => $externalId]);