API documentation

API - Mars QA 1.2.1

Welcome to the MarsQA API (Application Programming Interface) documentation. MarsQA's API is a simple, convenient, and secure way to access MarsQA functionality from third-party applications programmatically. You can request a trial by visiting https://qax.marshub.com and contacting us via the feedback form.

To use this document, you should have a basic familiarity with software development and the MarsQA user interface.

Create Session

This is a new API. The caller only provides data to be verified. Verification options and operations are set and operated by the user.

After creation, the caller and user interface cannot modify the file list and data, but can verify the data multiple times.

POST {{endpoint}}/api/v1/session
JSON Field
Description
Required

editorURLTemplate

Used to navigate to your translation editor

Y

callbackUrl

For receiving verification reports

N

files

Documents

Y

file.type

file or segment

Y

file.filename

File Name

Y

file.uri

if type=file URI is required

Y/N

file.content

Object Array, if type=segment content is required

Y/N

file.srcLang

if type=segment srcLang is required

Y/N

file.trgLang

if type=segment trgLang is required

Y/N

Create verify session example

POST /api/v1/session HTTP/1.1
Content-Type: application/json
Authorization: Bearer <your_token>
...

{
  "editorURLTemplate": "<Optional>",
  "callbackUrl": "<your_url>",
  "files": [  
    {
      "type": "file",
      "docId": "your_doc_id",
      "filename": "SamplePhotoPrinter.doc.sdlxliff",
      "uri": "https://marsqa.oss-cn-hongkong.aliyuncs.com/0rux4gwov7cp4ub7.sdlxliff"
    },
    {
      "type": "segment",
      "docId": "your_doc_id",
      "filename": "your_filename.mqxliff",
      "srcLang": "en-US",
      "trgLang": "zh-CN",
      "content": [
        {
          "source": "The world is beautiful",
          "target": "世界很美好"
        },
        ...
      ]
    },
    ...
  ]
}

You will get a Session ID

{
    "sid": "nam5tbxlmjzpbksq"
}

Then open the link in your browser: {{endpoint}}/verify/:sessionId, If authentication results already exist for the session, the results of the most recent request are displayed.

Every time the user clicks the "Verify" button, after the verification is successful, the URL of the message verification report will be sent to the callbackUrl

{
    "url":"xxx"
}

Get requests of session

GET {{endpoint}}/api/v1/session/:sessionId/requests

Response example

[
    {
        "requestId": "202312111647-5494",
        "fileCount": 2,
        "title": "Multiple document QA (2 files)",
        "segCount": 1,
        "charCount": 0,
        "mtCharCount": 0,
        "createdAt": 1702284446000,
        "duration": 1,
        "status": "Succeeded",
        "sessionId": "t7aludu4c8erp80y"
    },
    ...
]

Get results: GET {{endpoint}}/api/v1/report/:requestId

Get the latest results of session: GET {{endpoint}}/api/v1/session/:sessionId/last

Verify

  • This API has added permission verification, you need API Token to access

  • Punctuation Checker Options

  • Space Checker Options

POST {{endpoint}}/api/v1/verify

Example

POST /api/v1/verify HTTP/1.1
Content-Type: application/json
Authorization: Bearer <your_token>

{
  "editorURLTemplate": "<Optional>",
  "callbackURL": "<Optional>",
  "async": false,
  "input": [  <File Array>  ],
  "filter": {
    "excludeLockedSegments": true,
    "excludeICESegments": true,
    "exclude100Segments": true,
    "excludeReviewed": false
  },
  "verify": [...]
  ...
}

Field Descriptions

JSON Field
Description
Required

editorURLTemplate

If you need to generate links for each Issue to link to your translation editor and navigate to rows, please specify this value; otherwise set to "". eg: https://www.example.com/editor/{docId}#{segId}

Y

async

If true, you will quickly obtain the Report ID and later obtain the report data by callback. OR: GET /api/v1/report/{id}

N (default: false)

callbackURL

if async=true callbackURL is required

N

input

Documents (JsonObject Array)

Y

input*.type

file or segment

Y

input*.filename

file name

Y

input*.uri

if type=file URI is required

Y/N

input*.content

if type=segment content is required

Y/N

input*.srcLang

if type=segment srcLang is required

Y/N

input*.trgLang

if type=segment trgLang is required

Y/N

filter

Exclude segments

Y

filter.excludeLockedSegments

Exclude locked segments

Y

filter.excludeICESegments

Exclude ICE segments

Y

filter.exclude100Segments

Exclude 100% match segments

Y

filter.excludeReviewed

Exclude reviewed/proofreading segments

Y

verify

Checker list and settings (JsonObject Array)

Y

verify*.id

Checker ID

Y

verify*.enable

false: this check is skipped

Y

verify*.group

Group name

N

verify*.description

description

N

verify*.options

checker options

N

Error Codes

Code
Description

UNSUPPORTED_FILETYPE

File type not supported

Synch API,Async API

INVALID_URI

Invalid URI, cannot download file

Synch API

READ_FILE_FAILED

Unable to read/parse file

Synch API

UNKNOWN_ERROR

Synch API

Synch Request

POST {endpoint}/api/v1/verify

You need to set async to false, which will directly respond to the verification results.

Request

{
  "editorURLTemplate": "",
  "callbackURL": "",
  "async": false,
  "input": [  <File Array>  ],
  "filter": {
    "excludeLockedSegments": true,
    "excludeICESegments": true,
    "exclude100Segments": true,
    "excludeReviewed": false
  },
  "verify": [...]
  ...
}

Response (Status is Succeeded)

{
  "id": "202209211808-9753",
  "status": "Succeeded",
  "info": {
    "duration": 1,
    "checkFileCount": 1,
    "segmentCount": 199,
    "checkSegmentCount": 81,
    "createdAt": 1663754929118,
    "mtCheckedChars": 0,
    "mtMessage": null
  },
  "issues": [
    <issue data>
  ],
  "errors": []
}

Async Request

POST {endpoint}/api/v1/verify

You need to set async to true before sending the request, and then you will get a request ID. You can then use the request ID to actively fetch the validation results, or receive the results via a callback.

Request example

{
  "editorURLTemplate": "",
  "callbackURL": "<your callback url>",
  "async": true,
  "input": [  <File Array>  ],
  "filter": { ...  },
  "verify": [...]
  ...
}

Response example

{
  "id": "202209211808-9753",
  "status": "InProgress",
  "errors": ""
}

Get result by callback

Callback on success

{
    "id": "202209211808-9753",
    "status": "Succeeded",
    "info": { ... },
    "issues": [...]
}

Callback on failure


  "id":"202209211808-9753",
  "status":"Failed",
  "error":"..."
}

The result will be send to callbackUrl when QA has been completed.

Get result by request_id

GET {endpoint}/api/report/:id
  • id path param, request_id

Example

GET {endpoint}/api/report/202209211808-9753
{
    "id": "202209211808-9753",
    "status": "Succeeded",
    "info": { ... },
    "issues": [...]
}

Share

Generate shared links

POST {endpoint}/api/report/:requestId/share

Response

{
    "token": "eyJ0eXAiO...",
    "url": "xxx"
}

Shared link expires after seven days

Checker list

Basic Group

[
    {
        "id": "InconsistencyTargetChecker",
        "enable": true,
        "description": "Inconsistency in Target",
        "options": {
            "ignoreCase": true,
            "ignoreTags": true,
            "ignoreEndPunctuation": true
        }
    },
    {
        "id": "InconsistencySourceChecker",
        "enable": true,
        "description": "Inconsistency in Source",
        "options": {
            "ignoreCase": true,
            "ignoreTags": true,
            "ignoreEndPunctuation": true
        }
    },
    {
        "id": "EmptyChecker",
        "enable": true,
        "description": "Empty Translation"
    },
    {
        "id": "TargetSameAsSourceChecker",
        "enable": true,
        "description": "Target Same as Source"
    }
]

Standard Group

[
    {
        "id": "PunctuationChecker",
        "enable": true,
        "description": "Punctuation Mismatch",
        "options": {
            "checkIncorrectPunctuation": false,
            "checkMultiplePunctuation": true,
            "checkBracketMismatch": true,
            "checkPunctuationMismatch": true
        }
    },
    {
        "id": "TagChecker",
        "enable": true,
        "description": "Tag Mismatch"
    },
    {
        "id": "URLChecker",
        "enable": true,
        "description": "URL Mismatch"
    },
    {
        "id": "CamelCaseChecker",
        "enable": true,
        "description": "Camel Case Mismatch"
    },
    {
        "id": "AllUppercaseChecker",
        "enable": true,
        "description": "All Uppercase Mismatch"
    },
    {
        "id": "AlphanumericChecker",
        "enable": true,
        "description": "Alphanumeric Mismatch"
    },
    {
        "id": "NumericChecker",
        "enable": true,
        "description": "Numeric Mismatch"
    },
    {
        "id": "VariableChecker",
        "enable": true,
        "description": "Variable/Placeholder Mismatch",
        "options": {
            "regex": ""
        }
    },
    {
        "id": "TermChecker",
        "enable": false,
        "description": "Key Term Mismatch",
        "options": {
            "terms": []
        }
    },
    {
        "id": "SpaceChecker",
        "enable": true,
        "description": "Spaces Check",
        "options": {
            "checkMultipleSpaces": true,
            "checkZeroWidthSpaces": true,
            "checkSpacingBeforePunctuation": true,
            "checkMissingSpaceAfterPunctuation": true,
            "checkStartingSpaces": true,
            "checkTrailingSpaces": true,
            "checkExtraSpaces": true
        }
    },
    {
        "id": "RepeatedWordChecker",
        "enable": false,
        "description": "Repeated Words"
    },
    {
        "id": "ForbiddenWordChecker",
        "enable": true,
        "description": "Forbidden Words",
        "options": {
            "dict": []
        }
    },
    {
        "id": "UnconfirmedChecker",
        "enable": true,
        "description": "Translation not Confirmed"
    },
    {
        "id": "FuzzyMatchChecker",
        "enable": true,
        "description": "Unedited Fuzzy Match"
    }
]

Advance Group

[
    {
        "id": "SpellChecker",
        "enable": false,
        "description": "Spell Check"
    },
    {
        "id": "MachineTranslationChecker",
        "enable": false,
        "description": "Machine Translation Check",
        "options": {
            "showDiff": false,
            "threshold": 90,
            "percent": 10,
            "engine": "Google Translate",
            "userAvailableChars": 1000000
        }
    }
]

userAvailableChars is the number of characters available to the user. If the number of characters in the machine translation spot-check is greater than this value, an error message will be returned.

Example

Request body example

{
  "editorURLTemplate": "<Optional>",
  "callbackURL": "<Optional>",
  "input": [
    {
      "type": "file",
      "filename": "<file name>",
      "url": "<base64(file)>"
    }
  ],
  "filter": {
    "excludeLockedSegments": true,
    "excludeICESegments": true,
    "exclude100Segments": true,
    "excludeReviewed": false
  },
  "verify": [
    {
      "id": "InconsistencyTargetChecker",
      "enable": true,
      "group": "Basic",
      "description": "Inconsistency in Target",
      "options": {
        "ignoreCase": true,
        "ignoreTags": true,
        "ignoreEndPunctuation": true
      }
    },
    {
      "id": "InconsistencySourceChecker",
      "enable": true,
      "group": "Basic",
      "description": "Inconsistency in Source",
      "options": {
        "ignoreCase": true,
        "ignoreTags": true,
        "ignoreEndPunctuation": true
      }
    },
    {
      "id": "EmptyChecker",
      "enable": true,
      "group": "Basic",
      "description": "Empty Translation"
    },
    {
      "id": "TargetSameAsSourceChecker",
      "enable": true,
      "group": "Basic",
      "description": "Target Same as Source"
    },
    {
      "id": "PunctuationChecker",
      "enable": true,
      "group": "Common",
      "description": "Punctuation Mismatch",
      "options": {
        "checkIncorrectPunctuation": false,
        "checkMultiplePunctuation": true,
        "checkBracketMismatch": true,
        "checkPunctuationMismatch": true
      }
    },
    {
      "id": "TagChecker",
      "enable": true,
      "group": "Common",
      "description": "Tag Mismatch"
    },
    {
      "id": "URLChecker",
      "enable": true,
      "group": "Common",
      "description": "URL Mismatch"
    },
    {
      "id": "CamelCaseChecker",
      "enable": true,
      "group": "Common",
      "description": "Camel Case Mismatch"
    },
    {
      "id": "AllUppercaseChecker",
      "enable": true,
      "group": "Common",
      "description": "All Uppercase Mismatch"
    },
    {
      "id": "AlphanumericChecker",
      "enable": true,
      "group": "Common",
      "description": "Alphanumeric Mismatch"
    },
    {
      "id": "NumericChecker",
      "enable": true,
      "group": "Common",
      "description": "Numeric Mismatch"
    },
    {
      "id": "VariableChecker",
      "enable": true,
      "group": "Common",
      "description": "Variable/Placeholder Mismatch",
      "options": {
        "regex": ""
      }
    },
    {
      "id": "TermChecker",
      "enable": true,
      "group": "Common",
      "description": "Key Term Mismatch",
      "options": {
        "terms": [
          {
            "source": "Example",
            "target": "例子"
          }
        ]
      }
    },
    {
      "id": "SpaceChecker",
      "enable": true,
      "group": "Common",
      "description": "Spaces Check",
      "options": {
        "checkMultipleSpaces": true,
        "checkZeroWidthSpaces": true,
        "checkSpacingBeforePunctuation": true,
        "checkMissingSpaceAfterPunctuation": true,
        "checkStartingSpaces": true,
        "checkTrailingSpaces": true,
        "checkExtraSpaces": true
      }
    },
    {
      "id": "RepeatedWordChecker",
      "enable": false,
      "group": "Common",
      "description": "Repeated Words"
    },
    {
      "id": "ForbiddenWordChecker",
      "enable": true,
      "group": "Common",
      "description": "Forbidden Words",
      "options": {
        "dict": [
          "shameless",
          "obscene",
          "other"
        ]
      }
    },
    {
      "id": "UnconfirmedChecker",
      "enable": true,
      "group": "Common",
      "description": "Translation not Confirmed"
    },
    {
      "id": "FuzzyMatchChecker",
      "enable": true,
      "group": "Common",
      "description": "Unedited Fuzzy Match"
    },
    {
      "id": "SpellChecker",
      "enable": false,
      "group": "Advance",
      "description": "Spell Check"
    },
    {
      "id": "MachineTranslationChecker",
      "enable": false,
      "group": "Advance",
      "description": "Machine Translation Check",
      "options": {
        "showDiff": false,
        "threshold": 90,
        "percent": 10,
        "engine": "Google Translate/Microsoft Translate/Baidu Translate"
      }
    }
  ]
}

Response Example

{
  "id": "tTEGQPIcxWWLssUNirvUzpNv",
  "info": {
    "duration": 1,
    "checkFileCount": 1,
    "checkSegmentCount": 68,
    "createdAt": 1649233288155,
    "mtCheckedChars": 0,
    "mtMessage": null
  },
  "issues": [
    {
      "type": "EMPTY_TARGET",
      "description": "Empty Translation",
      "level": "Error",
      "issues": [
        {
          "id": 2,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "2",
          "segId": "2",
          "source": "Error trying to connect server.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 3,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "3",
          "segId": "3",
          "source": "Please reload the game.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 4,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "4",
          "segId": "4",
          "source": "Ok",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 6,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "5",
          "segId": "5",
          "source": "<a>Response Error</a>",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 7,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "6",
          "segId": "6",
          "source": "Please reload the game.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 8,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "7",
          "segId": "7",
          "source": "Ok",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 10,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "8",
          "segId": "8",
          "source": "Insufficient Funds",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 11,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "9",
          "segId": "9",
          "source": "Sorry, you do not have enough funds in your balance.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 12,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "10",
          "segId": "10",
          "source": "Fund your account to continue playing.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 13,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "11",
          "segId": "11",
          "source": "Cancel",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 15,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "12",
          "segId": "12",
          "source": "Deposit",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 16,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "13",
          "segId": "13",
          "source": "Option not available",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 17,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "14",
          "segId": "14",
          "source": "Impossible see this option.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 18,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "15",
          "segId": "15",
          "source": "Try with other options.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 19,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "16",
          "segId": "16",
          "source": "Okay",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 20,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "17",
          "segId": "17",
          "source": "Low Funds",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 21,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "18",
          "segId": "18",
          "source": "Sorry, you have low funds in your balance.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 22,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "19",
          "segId": "19",
          "source": "Cancel",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 24,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "20",
          "segId": "20",
          "source": "Deposit",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 25,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "21",
          "segId": "21",
          "source": "Pending Game",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 26,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "22",
          "segId": "22",
          "source": "You have an open previous game.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 27,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "23",
          "segId": "23",
          "source": "Ok",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 29,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "24",
          "segId": "24",
          "source": "Auto play Limit",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 30,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "25",
          "segId": "25",
          "source": "You have research auto play loss limit of: {x}",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 31,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "26",
          "segId": "26",
          "source": "Ok",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 33,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "27",
          "segId": "27",
          "source": "Auto play Limit",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 34,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "28",
          "segId": "28",
          "source": "You have research auto play win limit of: {x}",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 35,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "29",
          "segId": "29",
          "source": "Ok",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 37,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "30",
          "segId": "30",
          "source": "Auto play Finished",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 38,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "31",
          "segId": "31",
          "source": "All Auto Play games have been played.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 39,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "32",
          "segId": "32",
          "source": "Ok",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 41,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "33",
          "segId": "33",
          "source": "Free Plays Available",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 42,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "34",
          "segId": "34",
          "source": "You have an active Promotion of {x} Free Plays with a Bet of {y}.",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 43,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "35",
          "segId": "35",
          "source": "Do you want to play it now?",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 44,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "36",
          "segId": "36",
          "source": "Cancel",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 46,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "37",
          "segId": "37",
          "source": "Ok",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 48,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "38",
          "segId": "38",
          "source": "GO!",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 49,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "39",
          "segId": "39",
          "source": "GO!",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 50,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "40",
          "segId": "40",
          "source": "PAYTABLE",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 51,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "41",
          "segId": "41",
          "source": "HELP",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 52,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "42",
          "segId": "42",
          "source": "FUN MODE",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 53,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "43",
          "segId": "43",
          "source": "Replay",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 54,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "44",
          "segId": "44",
          "source": "Touch",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 55,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "45",
          "segId": "45",
          "source": "Won at",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 56,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "46",
          "segId": "46",
          "source": "Bonus Available",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 57,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "47",
          "segId": "47",
          "source": "Free Spins Available",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 58,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "48",
          "segId": "48",
          "source": "Balance:",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 59,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "49",
          "segId": "49",
          "source": "Balance",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 60,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "50",
          "segId": "50",
          "source": "Win:",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 61,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "51",
          "segId": "51",
          "source": "Win",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 62,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "52",
          "segId": "52",
          "source": "Bet:",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 63,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "53",
          "segId": "53",
          "source": "Bet",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 64,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "54",
          "segId": "54",
          "source": "Free Spins",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 65,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "55",
          "segId": "55",
          "source": "Free Spins Won",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 66,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "56",
          "segId": "56",
          "source": "Bonus Won",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 67,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "57",
          "segId": "57",
          "source": "Coin Size",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 68,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "58",
          "segId": "58",
          "source": "Lines",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 69,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "59",
          "segId": "59",
          "source": "Total Bet:",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 70,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "60",
          "segId": "60",
          "source": "AUTO PLAY",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 71,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "61",
          "segId": "61",
          "source": "Advanced",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 72,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "62",
          "segId": "62",
          "source": "Loss Limit",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 73,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "63",
          "segId": "63",
          "source": "Win Limit",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 74,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "64",
          "segId": "64",
          "source": "Promo",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 75,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "65",
          "segId": "65",
          "source": "Wins",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 76,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "66",
          "segId": "66",
          "source": "Select one item",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 77,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "67",
          "segId": "67",
          "source": "Select items",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 78,
          "docId": null,
          "type": "EMPTY_TARGET",
          "tuId": "68",
          "segId": "68",
          "source": "You Won",
          "target": "** Untranslated **",
          "mt": null,
          "mtsim": null,
          "message": "Empty Translation",
          "level": "Error",
          "marks": null,
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        }
      ],
      "message": null
    },
    {
      "type": "NUMERIC",
      "description": "Numeric Mismatch",
      "level": "Waring",
      "issues": [
        {
          "id": 1,
          "docId": null,
          "type": "NUMERIC",
          "tuId": "1",
          "segId": "1",
          "source": "Connection Error",
          "target": "[mark1]0006[/mark1]",
          "mt": null,
          "mtsim": null,
          "message": "Extra: 0006",
          "level": "Waring",
          "marks": [
            {
              "id": 1,
              "type": "Target",
              "start": 0,
              "end": 4,
              "text": "0006",
              "message": "Numeric Mismatch",
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        }
      ],
      "message": null
    },
    {
      "type": "TERM",
      "description": "Key Term Mismatch",
      "level": "Waring",
      "issues": [
        {
          "id": 5,
          "docId": null,
          "type": "TERM",
          "tuId": "4",
          "segId": "4",
          "source": "[mark2]Ok[/mark2]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Ok",
          "level": "Waring",
          "marks": [
            {
              "id": 2,
              "type": "Source",
              "start": 0,
              "end": 2,
              "text": "Ok",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 9,
          "docId": null,
          "type": "TERM",
          "tuId": "7",
          "segId": "7",
          "source": "[mark3]Ok[/mark3]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Ok",
          "level": "Waring",
          "marks": [
            {
              "id": 3,
              "type": "Source",
              "start": 0,
              "end": 2,
              "text": "Ok",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 14,
          "docId": null,
          "type": "TERM",
          "tuId": "11",
          "segId": "11",
          "source": "[mark4]Cancel[/mark4]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Cancel",
          "level": "Waring",
          "marks": [
            {
              "id": 4,
              "type": "Source",
              "start": 0,
              "end": 6,
              "text": "Cancel",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 23,
          "docId": null,
          "type": "TERM",
          "tuId": "19",
          "segId": "19",
          "source": "[mark5]Cancel[/mark5]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Cancel",
          "level": "Waring",
          "marks": [
            {
              "id": 5,
              "type": "Source",
              "start": 0,
              "end": 6,
              "text": "Cancel",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 28,
          "docId": null,
          "type": "TERM",
          "tuId": "23",
          "segId": "23",
          "source": "[mark6]Ok[/mark6]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Ok",
          "level": "Waring",
          "marks": [
            {
              "id": 6,
              "type": "Source",
              "start": 0,
              "end": 2,
              "text": "Ok",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 32,
          "docId": null,
          "type": "TERM",
          "tuId": "26",
          "segId": "26",
          "source": "[mark7]Ok[/mark7]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Ok",
          "level": "Waring",
          "marks": [
            {
              "id": 7,
              "type": "Source",
              "start": 0,
              "end": 2,
              "text": "Ok",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 36,
          "docId": null,
          "type": "TERM",
          "tuId": "29",
          "segId": "29",
          "source": "[mark8]Ok[/mark8]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Ok",
          "level": "Waring",
          "marks": [
            {
              "id": 8,
              "type": "Source",
              "start": 0,
              "end": 2,
              "text": "Ok",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 40,
          "docId": null,
          "type": "TERM",
          "tuId": "32",
          "segId": "32",
          "source": "[mark9]Ok[/mark9]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Ok",
          "level": "Waring",
          "marks": [
            {
              "id": 9,
              "type": "Source",
              "start": 0,
              "end": 2,
              "text": "Ok",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 45,
          "docId": null,
          "type": "TERM",
          "tuId": "36",
          "segId": "36",
          "source": "[mark10]Cancel[/mark10]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied:Cancel",
          "level": "Waring",
          "marks": [
            {
              "id": 10,
              "type": "Source",
              "start": 0,
              "end": 6,
              "text": "Cancel",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        },
        {
          "id": 47,
          "docId": null,
          "type": "TERM",
          "tuId": "37",
          "segId": "37",
          "source": "[mark11]Ok[/mark11]",
          "target": "",
          "mt": null,
          "mtsim": null,
          "message": "Glossary term not applied: Ok",
          "level": "Waring",
          "marks": [
            {
              "id": 11,
              "type": "Source",
              "start": 0,
              "end": 2,
              "text": "Ok",
              "message": null,
              "highlight": true
            }
          ],
          "groupId": null,
          "filename": "document.mqxliff",
          "url": null
        }
      ],
      "message": null
    }
  ],
  "errors": []
}

Last updated