DELETE /api/v1/intents/{id}
删除采购意图记录。
接口说明
- 需要认证 - 需要提供签名请求头
- 用途 - 删除采购意图记录
- 限制 - 仅能删除 DRAFT、FAILED、CANCELLED 状态的意图
- 不可恢复 - 删除操作不可恢复
请求头
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
X-App-Id | string | 是 | 应用 ID |
X-Timestamp | string | 是 | 请求时间戳(毫秒) |
X-Signature | string | 是 | 请求签名 |
路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 是 | 采购意图 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('采购意图已删除')响应参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | number | 状态码,0 表示成功 |
message | string | 响应消息 |
data | null | 删除操作无返回数据 |
响应示例
成功响应
{
"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 | ✅ 是 | 已取消记录可以删除 |
删除规则
可以删除的情况
-
DRAFT(草稿)
- 还未提交的意图
- 不产生任何影响
- 立即删除
-
FAILED(失败)
- 采购失败的记录
- 可以清理以保持数据干净
- 立即删除
-
CANCELLED(已取消)
- 已经取消的订单记录
- 可以删除不需要的记录
- 立即删除
不能删除的情况
常见错误
| 错误码 | 错误消息 | 解决方案 |
|---|---|---|
| 40401 | 采购意图不存在 | 检查意图 ID 是否正确 |
| 40004 | 当前状态不允许删除 | 先取消意图或等待完成 |
| 40301 | 无权访问该资源 | 确认该意图属于当前 App |
| 40101 | 签名验证失败 | 检查签名算法和密钥 |
删除 vs 取消
| 操作 | 适用状态 | 用途 | 可恢复 |
|---|---|---|---|
| 取消 | SUBMITTED, PROCESSING | 停止正在进行的采购 | 否 |
| 删除 | DRAFT, FAILED, CANCELLED | 清理不需要的记录 | 否 |
使用建议:
- 对正在进行的订单,使用 取消 操作
- 对已结束(失败/取消)的记录,使用 删除 操作
注意事项
- 不可恢复 - 删除操作永久生效,无法恢复
- 状态检查 - 删除前务必检查状态
- 关联数据 - 删除意图不会删除关联的订单数据
- 审计日志 - 删除操作会记录在审计日志中
- 速率限制 - 20 次/秒(单个 App ID)
最佳实践
- 谨慎删除 - 确认不再需要后再删除
- 批量操作 - 批量删除时注意错误处理
- 软删除 - 重要数据建议使用归档而非删除
- 权限控制 - 确保有适当的权限检查
- 日志记录 - 记录删除操作用于审计
数据保留
- 删除后 - 数据立即从系统中移除
- 备份数据 - 系统备份中可能保留 30 天
- 审计日志 - 操作记录永久保留
- 订单数据 - 电商平台的订单数据不受影响
替代方案
如果不想删除记录:
- 归档功能(未来版本)- 隐藏但不删除
- 标记功能(未来版本)- 添加标签管理
- 导出功能(未来版本)- 导出后删除