如何彻底删除ServiceM8 API中自动恢复的SAMPLE工单?
解决ServiceM8 API删除SAMPLE工单自动恢复的问题
可能的原因及对应解决方法
SAMPLE工单为系统预置演示数据
ServiceM8中的SAMPLE工单一般是官方预置的测试/演示条目,这类数据可能被系统标记为保护状态,删除后会自动从备份恢复。你可以先通过API查询该工单的is_sample或类似标识字段(参考ServiceM8 API的Work Orders模型字段定义),确认是否属于系统样本数据。删除请求存在异常或权限不足
检查PHP发起的删除请求是否返回成功状态码(如200 OK或204 No Content),同时确认你的API密钥拥有workorder.delete权限。建议在代码中添加日志输出,验证请求的UUID是否正确、认证头信息是否无误。示例排查代码:$jobUuid = "你的SAMPLE工单UUID"; $apiKey = "你的ServiceM8 API密钥"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.servicem8.com/api_1.0/workorder/{$jobUuid}.json"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Basic " . base64_encode("{$apiKey}:"), "Content-Type: application/json" ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); // 输出日志用于排查 error_log("删除请求响应内容: " . $response); error_log("HTTP状态码: " . $httpCode);替代方案:标记工单为已完成
若系统自动恢复删除操作,可尝试将该工单标记为已完成(设置status字段为Completed),这样它会从活跃工单列表中隐藏,达到类似的清理效果。示例更新代码:$jobUuid = "你的SAMPLE工单UUID"; $apiKey = "你的ServiceM8 API密钥"; $updateData = json_encode(['status' => 'Completed']); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.servicem8.com/api_1.0/workorder/{$jobUuid}.json"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Basic " . base64_encode("{$apiKey}:"), "Content-Type: application/json" ]); curl_setopt($ch, CURLOPT_POSTFIELDS, $updateData); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch);联系ServiceM8官方支持
若以上方法均无效,直接联系ServiceM8官方支持团队说明问题——系统预置的SAMPLE工单通过API删除后自动恢复,请求他们协助彻底移除或提供官方解决方案,这类系统级样本数据可能需要后台操作才能清理。
内容的提问来源于stack exchange,提问作者TomC
相关产品推荐
相关产品推荐

