为什么我在导出 API 调用时收到来自 CopyLeaks 的 "conflict" HTTP 409 响应?

Why am I getting a "conflict" HTTP 409 response from CopyLeaks on export API calls?

我在发送导出请求时处理 CopyLeaks 的“完成”webhook 时收到 HTTP 409“冲突”响应。我今天每次提交测试扫描时都会得到它,但几天前我上次测试代码时却没有得到它。我每次新扫描都会得到它。响应没有 body,也没有更多信息。知道什么会导致这种情况以及如何解决吗?

这是一些调试信息: 扫描API 请求body:

{
    "base64": "IjEuIElzIGl0IG9rIHRvIGhhdmUgYSBkYXJrIHJvb20gZHVyaW5nIHRoZSBleGFtPw0KDQoobWluaW11bSBvbmUgcGFyYWdyYXBoIHJlc3BvbnNlIC0gIDUgc2VudGVuY2VzKSI6Ck9rIEknbSBnb2luZyB0byBzdGFydCB3cml0aW5nIG91dCBteSBhbnN3ZXJzLi4uIGxhbGFsYWxhbGFsYWxhLiBNWSBBTlNXRVJTIEFSRSBTVElMTCBIRVJFISBJIExPVkUgUEFDUklNCgoiMS4gYikgV2hlcmUgaXMgdGhlIG1vc3QgaW1wb3J0YW50IHBsYWNlIHRvIHNob3cgaW4gdGhlIHJvb20gc2Nhbj8NCihtaW5pbXVtIG9uZSBwYXJhZ3JhcGggcmVzcG9uc2UgLSAgNSBzZW50ZW5jZXMpIjoKU28gZmFzdC4gTm90aGluZyBpcyBzYXZlZCB5ZXQsIGl0IG9ubHkgZ2V0cyBzYXZlZCBldmVyeSBtaW51dGUuIEl0IGNvdWxkIGJlIGxvbmdlciwgaWYgeW91IHdhbnQuIE9yIHNob3J0ZXIuIEFsbGxsbGxsbCBnb29kLiBKdXN0IHdhdGNoIHRoZSByaWdodC1oYW5kIGNvcm5lciBvZiB0aGUgc2NyZWVuLiBNYWdpYyB3aWxsIGhhcHBlbi4KCiIyLiBJcyBpdCBvayB0byByZWFkIGZyb20geW91ciBwaG9uZSBkdXJpbmcgdGhlIGV4YW0/IA0KKG1pbmltdW0gMSBzZW50ZW5jZSBhbnN3ZXIuKSI6ClNvIG1hZ2ljLiB3YWl0IGZvciBpdC4gT2sgSSdsbCBmaW5pc2ggdXAuIFdhaXQgZm9yIHRoZSBhdXRvc2F2ZSBhZ2FpbiwganVzdCB0byBzaG93IGl0cyBzdGlsbCB3b3JraW5nLi4uLiBldmVudHVhbGx5Li4uIEkgdGhpbmsgaW4gYSBmZXcgc2Vjb25kcy4uLiBtYXliZS4uLi4NCkkgc3VwcG9zZSB5b3UgY2FuIGZhc3QgZm9yd2FyZCB0aGlzIGlmIHlvdSB3YW50LiBOb3QgbWUuIEknbSBzdHVjayBpbiBodW1hbiB0aW1lLiBPSCENCk9rIG5vdyBJJ2xsIHN1Ym1pdC4KCg==",
    "filename": "087.txt",
    "properties": {
        "developerPayload": "Submitted by Mike",
        "exclude": {
            "quotes": true,
            "titles": true
        },
        "sandbox": true,
        "webhooks": {
            "status": "https://dev.earlychildhoodeducator.com/copyleaks/webhook/completed/087"
        }
    }
}

收到完成的 webhook body:

{"scannedDocument":{"scanId":"087","totalWords":158,"totalExcluded":56,"credits":0,"expectedCredits":1,"creationTime":"2021-07-21T03:48:41.013271Z","metadata":{"filename":"uploaded.txt"}},"results":{"score":{"identicalWords":1,"minorChangedWords":0,"relatedMeaningWords":0,"aggregatedScore":1.0},"internet":[{"url":"http://example.com/","id":"2a1b402420","title":"Example Domain","introduction":"Example Domain This domain is for use in illustrative examples in documents. You may use this domain in literature without ...","matchedWords":1,"metadata":{"finalUrl":"http://example.com/","filename":"source"}}],"database":[],"batch":[],"repositories":[]},"notifications":{"alerts":[]},"status":0,"developerPayload":"Submitted by Mike"}

导出APIbody:

{
    "completionWebhook": "https://dev.earlychildhoodeducator.com/copyleaks/webhook/exported/87",
    "crawledVersion": {
        "endpoint": "https://dev.earlychildhoodeducator.com/copyleaks/webhook/crawled/87",
        "headers": [
            [
                "HTTP_PRECI",
                "PRECI uOaDeRrRVhRPhQhJgHNK"
            ]
        ],
        "verb": "POST"
    },
    "results": [
        {
            "endpoint": "https://dev.earlychildhoodeducator.com/copyleaks/webhook/result/87/2a1b402420",
            "headers": [
                [
                    "HTTP_PRECI",
                    "PRECI uOaDeRrRVhRPhQhJgHNK"
                ]
            ],
            "id": "2a1b402420",
            "verb": "POST"
        }
    ]
}

导出API响应:

状态:“冲突”

Headers:

{'Date': 'Wed, 21 Jul 2021 03:49:26 GMT', 'Content-Length': '0', 'Connection': 'keep-alive', 'Strict-Transport-Security': 'max-age=2592000; includeSubDomains', 'CF-Cache-Status': 'DYNAMIC', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Report-To': '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=WFnYOPnNkcR4D%2F1%2BCbmHopFZw9ZtYMtUAVjA8Vx3c8OLYZakWpL76ysOKJ03Yd%2Fo6eNUaO35T%2B0k2lZxaUB9g6VYnmur9JrAnhL0G6%2FeceKE%2BTXCJBeMdEQDgGnEOrHRvTON"}],"group":"cf-nel","max_age":604800}', 'NEL': '{"report_to":"cf-nel","max_age":604800}

没有回应 body。

每个 Export 任务都有其唯一的任务 ID。使用请求的 ID 创建作业后,您将无法使用相同的 ID 创建另一个导出作业。

话虽如此,如果您收到错误 409,我假设您正在尝试导出具有相同作业 ID 的多个任务。

为了提交唯一的导出 ID,您必须将 URI 更改为这种形式:

https://api.copyleaks.com/v3/downloads/scanId/export/UNIQUE_JOB_ID

并且您创建的每个新导出作业都有一个 UNIQUE_JOB_ID