{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"a0a84d04-7fcb-42e3-a990-2d939e7479db","name":"Verifika QA API 1.1 (beta)","description":"The Verifika QA APIs are designed to facilitate quality assurance (QA) in translation and localization projects.\n\nThe purpose of these APIs is to integrate Verifika's powerful QA and linguistic verification capabilities into translation management systems (TMS), CAT (Computer-Assisted Translation) tools, product information management (PIM).\n\nKey purposes of Verifika QA APIs:\n\n1. **Automated Quality Assurance:** Verifika QA APIs allow developers to automatically check and validate translation content against predefined linguistic rules, custom user's requirements, and industry standards. This helps ensure the accuracy and consistency of translations, improving the overall quality of localized content.\n2. **Linguistic Verification:** The APIs enable linguistic verification by detecting potential errors, such as _terminology inconsistencies_, _grammar issues_, _punctuation errors_, and more. This ensures that translations comply with the specific linguistic requirements of the target language.\n3. **Localization Standard Compliance:** The APIs support the validation of translations against industry-specific localization standards and guidelines, ensuring compliance with specific requirements and regulations.\n4. **Integration with Translation Workflows:** By integrating Verifika QA APIs into translation management systems or CAT tools, your translators and project managers can seamlessly access QA features within their familiar environments. This streamlines the localization workflow and reduces the need for manual checking.\n5. **Customization and Extensibility:** The APIs offer flexibility in defining custom rules and quality checks tailored to the specific needs of translation projects. This enables users to create and apply their own linguistic rules and criteria for quality assessment.\n6. **Client SDK Generation**: Verifika APIs follow OpenAPI specification. There are [tools available that can take an OpenAPI specification](https://github.com/OpenAPITools/openapi-generator) and automatically generate client libraries in several languages. This can significantly speed up the development process and ensure consistency in the way clients interact with the API.\n    \n\nBy integrating these Verifika QA APIs into translation management systems and CAT tools, language professionals can ensure high-quality and accurate translations that comply with industry standards and client requirements.\n\n🔐 **Authorizing Postman's Collection Requests to the Verifika API**  \n[Authorizing requests overview](https://e-verifika.com/auth-api)\n\n\n## ⭐️ Translation Quality Check from TMS\n\nThis guide outlines the steps to automatically validate the quality of translations produced by an external linguist. The process leverages:\n\n- Translation Management System (TMS),\n- Verifika API,\n- Project coordinators.\n    \n\n**Objective**: Save time for project coordinators by automating the translation quality check process.\n\n**Process Overview**:  \nUpon receiving translation files from the linguist in the TMS, the system will automatically trigger a quality check through Verifika's APIs. This involves creating a matching project in Verifika, assigning the appropriate Quality Assurance (QA) requirements, running a validation check, and retrieving the found translation errors.\n\nFollow these steps for the procedure:\n\n1\\. **Create a Project**: Create a project in Verifika with the same name as in TMS.  \n`POST /api/Projects`\n\n2\\. **Load files**: Upload files. Verifika supports uploading files larger than 100 MB. Even a very large translation memory can be checked in Verifika.\n\n- Upload a file or split a large file into chunks and upload them at the same time.  \n    `POST /api/ProjectFiles/UploadChunkFile`\n- When you recieve status code \"200\" for each chunck, just request \"commit the  \n    file\".  \n    `POST/api/ProjectFiles/CommitFile`\n    \n\n3\\. **Obtain QA Settings**: Retrieve a list of available QA profiles, which contain QA requirements.  \n`GET /api/QASettings` (👋_a user must first create QA profiles in Verifika Web/Desktop_)\n\n4\\. **Assign QA Profile**: Select the desired QA profile from the list and apply it to the project using the profile ID.  \n`POST /api/Projects/:id/ChangeQASettings`\n\n5\\. **Subscribe to Server Events** (Optional): Subscribe to server-side events to allow the web client to stay updated on server actions. This step uses the SignalR JavaScript library, and more details can be found here: [Signalr Javascript-client](https://learn.microsoft.com/en-us/aspnet/core/signalr/javascript-client).  \n`POST /api/sockets/project/Subscribe`\n\n6\\. **Initiate Validation Check**: Run the validation check and obtain the results in two steps:\n\n- Generate a unique identifier for the upcoming report containing potential quality issues.  \n    `POST /api/Reports`\n- Then start the file analysis process. This request requires the ID of the report generated in the previous step.  \n    `POST /api/Reports/:id/GenerateLink`\n    \n\n7\\. Once these steps are complete, there are two ways to retrieve the report:\n\n**Option 1**: Subscribe to socket channel notifications. The server will notify you when different categories in the report are ready. For instance, upon completion of the grammar error category, you will receive a socket message as follows:\n\n``` json\n{\n  \"type\": 1,\n  \"target\": \"progress\",\n  \"arguments\": [\n    {\n      \"reportId\": \"<uuid>\", \n      \"projectId\": \"<uuid>\", \n      \"version\": 12345,\n      \"status\": 1, // indicates that the category is ready\n      \"data\": {\n        \"issueType\": 5, // \"5\" pertains to grammar check category\n        \"groupId\": null\n      }\n    },\n    {\n      \"tabId\": \"<uuid>\"\n    }\n  ]\n}\n\n ```\n\nHere, \"status\": 1 indicates that the category is ready, and \"issueType\": 5 tells that grammar checks are completed.\n\n**Option 2**: Poll the server periodically. When all \"issueType\" statuses equal \"1\", the report is 100% ready.\n\n```\n\"statuses\": [\n    {\"issueType\": 0,\"status\": 1},\n    {\"issueType\": 1,\"status\": 1},\n    {\"issueType\": 5,\"status\": 1},\n    {\"issueType\": 2,\"status\": 1},\n    {\"issueType\": 3,\"status\": 1},\n    {\"issueType\": 4,\"status\": 1} ]\n\n ```\n\nFinally, retrieve the data using:\n\n```\nGET api/QualityIssues\n\n ```\n\nThis guide provides an automated workflow to check the quality of external translations, improving efficiency by reducing manual work.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"7327322","collectionId":"a0a84d04-7fcb-42e3-a990-2d939e7479db","publishedId":"2s9XxztY7M","public":true,"publicUrl":"https://qa-api.e-verifika.com","privateUrl":"https://go.postman.co/documentation/7327322-a0a84d04-7fcb-42e3-a990-2d939e7479db","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/c4120182-adae-49ce-8a76-11ccf50af621/bG9nbyArIG5hbWUgXyA0MHB4Mi5wbmc=","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":"https://content.pstmn.io/c4120182-adae-49ce-8a76-11ccf50af621/bG9nbyArIG5hbWUgXyA0MHB4Mi5wbmc=","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2023-08-07T12:55:09.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/c4120182-adae-49ce-8a76-11ccf50af621/bG9nbyArIG5hbWUgXyA0MHB4Mi5wbmc=","logoDark":"https://content.pstmn.io/c4120182-adae-49ce-8a76-11ccf50af621/bG9nbyArIG5hbWUgXyA0MHB4Mi5wbmc="}},"statusCode":200},"environments":[{"name":"Verifika Public","id":"82209086-dd50-4100-b627-3233b5794de5","owner":"24414322","values":[{"key":"base_url","value":"https://beta.e-verifika.com","enabled":true,"type":"secret"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://e-verifika.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Verifika Public","value":"24414322-82209086-dd50-4100-b627-3233b5794de5"}],"canonicalUrl":"https://qa-api.e-verifika.com/view/metadata/2s9XxztY7M"}