https://qa.eltur.co · QA adapter under /qa-adapter/v1 · async submit→poll.Dispatch POSTs a bilingual file to /qa-adapter/v1/check. The engine auto-picks the QA profile by Account + Division + Language pair, runs the deterministic rules, and (if the profile has AI on, or enableAi=true) the AI deep-review in the background. The call returns a checkId immediately; poll GET /qa-adapter/v1/check/{checkId} until status is completed or failed. The file is never modified — only findings are returned.
Every /qa-adapter/v1/* data endpoint requires: Authorization: Bearer <WW_ADAPTER_TOKEN>. The same secret must be set on this service and on Dispatch. Wrong/missing → 401.
multipart/form-data
| Field | Req | Default | Notes |
|---|---|---|---|
file | yes | — | Bilingual file. Allowed: .wsxz, .zip, .xlz, .mqxlz, .sdlrpx, .sdlppx, .sdlxliff, .xliff, .xlf, .mxliff, .mqxliff, .txlf |
account | no | "" | e.g. Apple, Amazon — drives auto-match |
division | no | "" | e.g. AppleCare, Ads |
sourceLang | no | en | e.g. en, en-US |
targetLang | no | tr | e.g. tr, ar, ru (RTL aware) |
projectRef | no | "" | Your job reference, stored with the run |
profile | no | "" | Explicit profile override (wins over auto-match) |
enableAi | no | "" | true/1/yes/on forces AI review |
Response: {"checkId":"ww_...","status":"pending"} — completed if rule-only (ready now), pending if AI runs in background.
{
"checkId": "ww_...",
"status": "completed", // pending | completed | failed
"errors": [
{
"errorId": "519ac8c7c704a375", // stable across re-runs
"category": "Accuracy",
"subcategory": "Number",
"severity": "critical", // critical | major | minor | preferential
"segmentText": "...",
"errorDescription": "Numeric values do not match.",
"penaltyPoints": 5
}
],
"qualityScore": 98.7,
"errorsCount": 1
}
Poll every 3–5s until status is completed/failed. Results are durably stored. 404 = unknown id; 503 = retry.
explicit profile= > structured (account+division+langpair > account+langpair > account+division > account > langpair) > filename > content/generic. Send account + targetLang (and division + sourceLang when known) to guarantee the right client profile.
curl -X POST https://qa.eltur.co/qa-adapter/v1/check -H "Authorization: Bearer $WW_ADAPTER_TOKEN" -F "file=@job.sdlxliff" -F "account=Apple" -F "division=AppleCare" -F "sourceLang=en" -F "targetLang=tr" -F "projectRef=DISPATCH-9912"
curl https://qa.eltur.co/qa-adapter/v1/check/ww_... -H "Authorization: Bearer $WW_ADAPTER_TOKEN"
completed.GET /qa-adapter/v1/health (no auth). Token check: POST /qa-adapter/v1/auth.