# API documentation

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://qa.marshub.com](https://qa.marshub.com/) and contacting us via the [feedback](https://qa-docs.marshub.com/the-marsqa-dashboard-explained#feedback) form.

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

## Create Session <a href="#create-session" id="create-session"></a>

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.

```curl
POST {{endpoint}}/api/v1/session
```

<table><thead><tr><th>JSON Field</th><th width="391">Description</th><th>Required</th></tr></thead><tbody><tr><td>editorURLTemplate</td><td>Used to navigate to your translation editor</td><td>Y</td></tr><tr><td>callbackUrl</td><td>For receiving verification reports</td><td>N</td></tr><tr><td><strong>files</strong></td><td>Documents</td><td>Y</td></tr><tr><td>file.type</td><td><code>file</code> or <code>segment</code></td><td>Y</td></tr><tr><td>file.filename</td><td>File Name</td><td>Y</td></tr><tr><td>file.uri</td><td><code>if type=file</code> URI is required</td><td>Y/N</td></tr><tr><td>file.content</td><td>Object Array, <code>if type=segment</code> content is required</td><td>Y/N</td></tr><tr><td>file.srcLang</td><td><code>if type=segment</code> srcLang is required</td><td>Y/N</td></tr><tr><td>file.trgLang</td><td><code>if type=segment</code> trgLang is required</td><td>Y/N</td></tr></tbody></table>

Create verify session example

```http
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

```json
{
    "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`

```json
{
    "url":"xxx"
}
```

## Get requests of session <a href="#get-requests-of-session" id="get-requests-of-session"></a>

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

Response example

```json
[
    {
        "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 <a href="#verify" id="verify"></a>

* This API has added permission verification, you need API Token to access
* Punctuation Checker Options
* Space Checker Options

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

Example

```http
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**

<table><thead><tr><th>JSON Field</th><th width="430">Description</th><th>Required</th></tr></thead><tbody><tr><td>editorURLTemplate</td><td>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 "". <code>eg: https://www.example.com/editor/{docId}#{segId}</code></td><td>Y</td></tr><tr><td>async</td><td>If <code>true</code>, you will quickly obtain the <code>Report ID</code> and later obtain the report data by callback.<br>OR: <code>GET /api/v1/report/{id}</code></td><td>N (default: false)</td></tr><tr><td>callbackURL</td><td><code>if async=true</code> callbackURL is required</td><td>N</td></tr><tr><td><strong>input</strong></td><td>Documents (JsonObject Array)</td><td>Y</td></tr><tr><td>input*.type</td><td><code>file</code> or <code>segment</code></td><td>Y</td></tr><tr><td>input*.filename</td><td>file name</td><td>Y</td></tr><tr><td>input*.uri</td><td><code>if type=file</code> URI is required</td><td>Y/N</td></tr><tr><td>input*.content</td><td><code>if type=segment</code> content is required</td><td>Y/N</td></tr><tr><td>input*.srcLang</td><td><code>if type=segment</code> srcLang is required</td><td>Y/N</td></tr><tr><td>input*.trgLang</td><td><code>if type=segment</code> trgLang is required</td><td>Y/N</td></tr><tr><td><strong>filter</strong></td><td>Exclude segments</td><td>Y</td></tr><tr><td>filter.excludeLockedSegments</td><td>Exclude locked segments</td><td>Y</td></tr><tr><td>filter.excludeICESegments</td><td>Exclude ICE segments</td><td>Y</td></tr><tr><td>filter.exclude100Segments</td><td>Exclude 100% match segments</td><td>Y</td></tr><tr><td>filter.excludeReviewed</td><td>Exclude reviewed/proofreading segments</td><td>Y</td></tr><tr><td><strong>verify</strong></td><td>Checker list and settings (JsonObject Array)</td><td>Y</td></tr><tr><td>verify*.id</td><td>Checker ID</td><td>Y</td></tr><tr><td>verify*.enable</td><td>false: this check is skipped</td><td>Y</td></tr><tr><td>verify*.group</td><td>Group name</td><td>N</td></tr><tr><td>verify*.description</td><td>description</td><td>N</td></tr><tr><td>verify*.options</td><td>checker options</td><td>N</td></tr></tbody></table>

**Error Codes**

<table><thead><tr><th>Code</th><th width="277">Description</th><th></th></tr></thead><tbody><tr><td>UNSUPPORTED_FILETYPE</td><td>File type not supported</td><td><code>Synch API</code>,<code>Async API</code></td></tr><tr><td>INVALID_URI</td><td>Invalid URI, cannot download file</td><td><code>Synch API</code></td></tr><tr><td>READ_FILE_FAILED</td><td>Unable to read/parse file</td><td><code>Synch API</code></td></tr><tr><td>UNKNOWN_ERROR</td><td></td><td><code>Synch API</code></td></tr></tbody></table>

## Synch Request

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

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

Request

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

Response (Status is Succeeded)

```json
{
  "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 <a href="#async-request" id="async-request"></a>

```curl
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**

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

**Response example**

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

**Get result by callback**

Callback on success

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

Callback on failure

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

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

## Get result by request\_id <a href="#get-result-by-request_id" id="get-result-by-request_id"></a>

```curl
GET {endpoint}/api/report/:id
```

* `id` path param, request\_id

**Example**

```curl
GET {endpoint}/api/report/202209211808-9753
```

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

## Share <a href="#share" id="share"></a>

Generate shared links

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

Response

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

Shared link expires after seven days

## Checker list <a href="#checker-list" id="checker-list"></a>

**Basic Group**

```json
[
    {
        "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**

```json
[
    {
        "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**

```json
[
    {
        "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 <a href="#example" id="example"></a>

Request body example

```json
{
  "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

```json
{
  "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": []
}
```
