{"record":{"id":"80a6131b7a9cccc2","repo":"PaddlePaddle/PaddleOCR","slug":"done-job-response-resulturl-must-contain-non-empty","errorCode":null,"errorMessage":"Done job response resultUrl must contain non-empty string 'jsonUrl'.","messagePattern":"Done job response resultUrl must contain non-empty string 'jsonUrl'\\.","errorType":"exception","errorClass":"ResponseFormatError","httpStatus":null,"severity":"error","filePath":"paddleocr/_api_client/_core.py","lineNumber":189,"sourceCode":"    return data\n\n\ndef extract_job_id(data: dict) -> str:\n    job_id = data.get(\"jobId\")\n    if not isinstance(job_id, str) or not job_id:\n        raise ResponseFormatError(\n            \"Response data must contain non-empty string 'jobId'.\"\n        )\n    return job_id\n\n\ndef validate_result_json_url(data: dict) -> str:\n    result_url = data.get(\"resultUrl\")\n    if not isinstance(result_url, dict):\n        raise ResponseFormatError(\"Done job response must contain object 'resultUrl'.\")\n    json_url = result_url.get(\"jsonUrl\")\n    if not isinstance(json_url, str) or not json_url:\n        raise ResponseFormatError(\n            \"Done job response resultUrl must contain non-empty string 'jsonUrl'.\"\n        )\n    return json_url\n\n\ndef parse_batch_status(batch_id: str, data: dict) -> BatchStatus:\n    result = data.get(\"extractResult\")\n    if not isinstance(result, list):\n        raise ResponseFormatError(\n            \"Batch response data must contain list 'extractResult'.\"\n        )\n    jobs = []\n    for item in result:\n        if not isinstance(item, dict):\n            raise ResponseFormatError(\"Batch extractResult items must be objects.\")\n        job_id = item.get(\"jobId\")\n        if not isinstance(job_id, str) or not job_id:\n            raise ResponseFormatError(","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/PaddlePaddle/PaddleOCR/blob/2661c7c0ef5c613e8f93c6e93b2e052399f0f854/paddleocr/_api_client/_core.py#L171-L207","documentation":"Error \"Done job response resultUrl must contain non-empty string 'jsonUrl'.\" thrown in PaddlePaddle/PaddleOCR.","triggerScenarios":"Raised by validate_result_json_url() when the done job's resultUrl object lacks a non-empty string 'jsonUrl'.","commonSituations":"The 'resultUrl' object in a done job response lacked a valid 'jsonUrl' string. Occurs with partial result publication. Retry the status request or re-run the job.","solutions":["Ensure the job finished successfully; a done job's resultUrl must include a non-empty jsonUrl string.","Check that the requested model produces JSON results and that result generation did not fail server-side.","Print the full resultUrl object to see which URL fields the server actually returned."],"exampleFix":"json_url = result_url.get(\"jsonUrl\")\nif not json_url:\n    print(result_url)  # inspect available result URLs","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2661c7c0ef5c613e8f93c6e93b2e052399f0f854","analyzedAt":"2026-08-14T20:17:30.180Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}