Skip to Content
API 参考API 接口删除采购意图

DELETE /api/v1/intents/{id}

删除采购意图记录。

接口说明

  • 需要认证 - 需要提供签名请求头
  • 用途 - 删除采购意图记录
  • 限制 - 仅能删除 DRAFT、FAILED、CANCELLED 状态的意图
  • 不可恢复 - 删除操作不可恢复

请求头

参数类型必填说明
X-App-Idstring应用 ID
X-Timestampstring请求时间戳(毫秒)
X-Signaturestring请求签名

路径参数

参数类型必填说明
idstring采购意图 ID

请求参数

无需请求体。

请求示例

cURL

curl -X DELETE "https://api.procure-core.com/api/v1/intents/intent_67890" \ -H "X-App-Id: dev_app_local" \ -H "X-Timestamp: 1708851000000" \ -H "X-Signature: abc123..."

TypeScript / JavaScript

import { ProcureClient } from '@procure-core/sdk'; const client = new ProcureClient({ appId: 'your_app_id', appSecret: 'your_app_secret', baseURL: 'https://api.procure-core.com' }); // 删除采购意图 await client.intents.delete('intent_67890'); console.log('采购意图已删除');

Python

from procure_core import ProcureClient client = ProcureClient( app_id='your_app_id', app_secret='your_app_secret', base_url='https://api.procure-core.com' ) # 删除采购意图 client.intents.delete('intent_67890') print('采购意图已删除')

响应参数

参数类型说明
codenumber状态码,0 表示成功
messagestring响应消息
datanull删除操作无返回数据

响应示例

成功响应

{ "code": 0, "message": "操作成功", "data": null }

错误响应

意图不存在

状态码: 404 Not Found

{ "code": 40401, "message": "采购意图不存在", "data": null }

状态不允许删除

状态码: 400 Bad Request

{ "code": 40004, "message": "当前状态不允许删除", "data": { "currentStatus": "PROCESSING", "reason": "正在处理中的订单不能删除,请先取消" } }

无权删除

状态码: 403 Forbidden

{ "code": 40301, "message": "无权访问该资源", "data": null }

使用场景

1. 删除草稿

// 用户放弃创建的草稿 async function deleteDraft(intentId: string) { const intent = await client.intents.get(intentId); if (intent.status !== 'DRAFT') { throw new Error('只能删除草稿状态的意图'); } await client.intents.delete(intentId); console.log('草稿已删除'); }

2. 清理失败记录

// 批量清理失败的采购记录 async function cleanupFailedIntents() { const failedIntents = await client.intents.list({ status: 'FAILED', pageSize: 100 }); for (const intent of failedIntents.data.items) { try { await client.intents.delete(intent.id); console.log(`已删除失败记录: ${intent.id}`); } catch (error) { console.error(`删除失败: ${intent.id}`, error); } } }

3. 删除已取消的订单

// 删除已取消的订单记录 async function deletecancelledIntents(userId: string) { const cancelledIntents = await client.intents.list({ userId, status: 'CANCELLED', pageSize: 50 }); for (const intent of cancelledIntents.data.items) { await client.intents.delete(intent.id); } console.log(`已删除 ${cancelledIntents.data.total} 条取消记录`); }

4. 带确认的安全删除

// 删除前确认状态 async function safeDelete(intentId: string) { const intent = await client.intents.get(intentId); // 检查是否可以删除 const deletableStatuses = ['DRAFT', 'FAILED', 'CANCELLED']; if (!deletableStatuses.includes(intent.status)) { throw new Error( `当前状态 ${intent.status} 不允许删除。` + `可删除状态: ${deletableStatuses.join(', ')}` ); } // 确认删除 console.log(`即将删除意图: ${intent.title}`); await client.intents.delete(intentId); console.log('删除成功'); }

删除状态说明

状态是否可删除说明
DRAFT✅ 是草稿可以直接删除
SUBMITTED❌ 否需要先取消
PROCESSING❌ 否需要先取消
COMPLETED❌ 否已完成不可删除(仅归档)
FAILED✅ 是失败记录可以删除
CANCELLED✅ 是已取消记录可以删除

删除规则

可以删除的情况

  1. DRAFT(草稿)

    • 还未提交的意图
    • 不产生任何影响
    • 立即删除
  2. FAILED(失败)

    • 采购失败的记录
    • 可以清理以保持数据干净
    • 立即删除
  3. CANCELLED(已取消)

    • 已经取消的订单记录
    • 可以删除不需要的记录
    • 立即删除

不能删除的情况

  1. SUBMITTED(已提交)

    • 正在排队等待处理
    • 需要先取消
  2. PROCESSING(处理中)

    • 正在处理采购流程
    • 需要先取消
  3. COMPLETED(已完成)

    • 采购已经完成
    • 不可删除,仅支持归档(未来功能)

常见错误

错误码错误消息解决方案
40401采购意图不存在检查意图 ID 是否正确
40004当前状态不允许删除先取消意图或等待完成
40301无权访问该资源确认该意图属于当前 App
40101签名验证失败检查签名算法和密钥

删除 vs 取消

操作适用状态用途可恢复
取消SUBMITTED, PROCESSING停止正在进行的采购
删除DRAFT, FAILED, CANCELLED清理不需要的记录

使用建议:

  • 对正在进行的订单,使用 取消 操作
  • 对已结束(失败/取消)的记录,使用 删除 操作

注意事项

  1. 不可恢复 - 删除操作永久生效,无法恢复
  2. 状态检查 - 删除前务必检查状态
  3. 关联数据 - 删除意图不会删除关联的订单数据
  4. 审计日志 - 删除操作会记录在审计日志中
  5. 速率限制 - 20 次/秒(单个 App ID)

最佳实践

  1. 谨慎删除 - 确认不再需要后再删除
  2. 批量操作 - 批量删除时注意错误处理
  3. 软删除 - 重要数据建议使用归档而非删除
  4. 权限控制 - 确保有适当的权限检查
  5. 日志记录 - 记录删除操作用于审计

数据保留

  • 删除后 - 数据立即从系统中移除
  • 备份数据 - 系统备份中可能保留 30 天
  • 审计日志 - 操作记录永久保留
  • 订单数据 - 电商平台的订单数据不受影响

替代方案

如果不想删除记录:

  1. 归档功能(未来版本)- 隐藏但不删除
  2. 标记功能(未来版本)- 添加标签管理
  3. 导出功能(未来版本)- 导出后删除

相关接口