记录删除工作单 work-order-endpoint
使用数据卫生API中的/workorder端点在Adobe Experience Platform中创建、查看和管理记录删除工作单。 您可以跨数据集控制、监控和跟踪数据删除,以帮助您保持数据质量并支持组织的数据治理标准。
快速入门
在开始之前,请参阅概述以了解所需的标头、如何读取示例API调用以及在何处查找相关文档。
配额和处理时间线 quotas
记录删除工作单受每日和每月标识符提交限制的约束,具体由贵组织的许可证权利文件决定。 这些限制同时适用于基于UI和基于API的记录删除请求。
按产品显示的每月提交权利 quota-limits
下表显示了按产品和权利级别划分的标识符提交限制。 对于每个产品,每月上限是两个值中的较小值:固定标识符上限或与许可数据量绑定的基于百分比的阈值。 实际上,大多数组织会根据其实际可寻址受众或Adobe Customer Journey Analytics行授权,降低每月限额。
- 配额在每个日历月的第一天重置。 未使用的配额 未 延期。
- 配额使用量基于贵组织为 提交的标识符 授予的每月授权。 系统护栏不强制执行配额,但可以监视和审查配额。
- 记录删除工作单产能是共享服务。 您的每月上限反映了Real-Time CDP、Adobe Journey Optimizer、Customer Journey Analytics和任何适用的Shield加载项中的最高权限。
处理标识符提交的时间表 sla-processing-timelines
提交后,系统会根据您的权利级别对记录删除工作单进行排队和处理。
如果贵组织需要更高的限制,请联系您的Adobe代表进行权利审查。
列表记录删除工作单 list
检索组织内数据卫生操作的分页记录删除工作单列表。 使用查询参数筛选结果。 每个工作单记录包括操作类型(如identity-delete)、状态、相关数据集和用户详细信息,以及审核元数据。
API格式
GET /workorder
下表描述了可用于列出记录删除工作单的查询参数。
searchtypeidentity-delete)筛选结果。status枚举:
received,validated,submitted,ingested,completed,failedauthordisplayNamedescriptionworkorderIdsandboxName*包括所有沙盒。fromDatetoDate。toDatefromDate。filterDatepagelimitorderBy+或-前缀进行升序/降序。 示例:orderBy=-datasetName。properties请求
以下请求检索所有已完成的记录删除工作单,每页最多检索两个工作单:
curl -X GET \
"https://platform.adobe.io/data/core/hygiene/workorder?status=completed&limit=2" \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
响应
成功的响应将返回记录删除工作单的分页列表。
{
"results": [
{
"workorderId": "DI-1729d091-b08b-47f4-923f-6a4af52c93ac",
"orgId": "9C1F2AC143214567890ABCDE@AcmeOrg",
"bundleId": "BN-4cfabf02-c22a-45ef-b21f-bd8c3d631f41",
"action": "identity-delete",
"createdAt": "2034-03-15T11:02:10.935Z",
"updatedAt": "2034-03-15T11:10:10.938Z",
"operationCount": 3,
"targetServices": [
"profile",
"datalake",
"identity",
"ajo"
],
"status": "received",
"createdBy": "a.stark@acme.com <a.stark@acme.com> BD8C3D631F41@acme.com",
"datasetId": "a7b7c8f3a1b8457eaa5321ab",
"datasetName": "Acme_Customer_Exports",
"displayName": "Customer Identity Delete Request",
"description": "Scheduled identity deletion for compliance"
}
],
"total": 1,
"count": 1,
"_links": {
"next": {
"href": "https://platform.adobe.io/workorder?page=1&limit=2",
"templated": false
},
"page": {
"href": "https://platform.adobe.io/workorder?limit={limit}&page={page}",
"templated": true
}
}
}
下表描述了响应中的属性。
resultsworkorderIdorgIdbundleIdactioncreatedAtupdatedAtoperationCounttargetServices["datalake", "identity", "profile", "ajo"])。 对于仅Customer Journey Analytics组织(没有实时客户配置文件权利),唯一有效值为["datalake"]。statusreceived、validated、submitted、ingested、completed和failed。createdBydatasetIdALL。 当请求使用仅配置文件模式时,此值为ALL。datasetNamedisplayNamedescriptiontotalcount_linksnexthref (字符串)和templated (布尔值)的对象。pagehref (字符串)和templated (布尔值)的对象。创建记录删除工作单 create
要从单个数据集、多个数据集或所有数据集中删除与一个或多个身份关联的记录,请对/workorder端点发出POST请求。
工作单以异步方式处理,并在提交后显示在工作单列表中。 从2026年3月Experience Platform版本开始,所有客户通常都可以使用多数据集和仅配置文件(目标服务)选项。
API格式
POST /workorder
- 数据集架构必须定义主标识或标识映射。您只能从关联XDM架构定义主标识或标识映射的数据集中删除记录。
- 未扫描辅助标识。如果数据集包含多个标识字段,则仅使用主标识进行匹配。 无法根据非主标识定位或删除记录。
- 跳过没有填充主标识的记录。如果记录未填充主身份元数据,则无法将其删除。
- 在身份配置之前摄取的数据不合格。如果在数据摄取后将主标识字段添加到架构,则无法通过记录删除工作单来删除以前摄取的记录。
身份有效负载格式(namespacesIdentities或identities)
请求正文必须正好包含以下项之一。
namespacesIdentitiesnamespace (例如,{ "code": "email" })和ids (标识字符串数组)的对象数组。identitiesnamespace (例如,{ "code": "email" })和单个id (字符串)的对象数组。如果您同时发送两个属性,两个属性,或者为您包括的属性提供空数组,则API会返回HTTP 400 (错误请求),并显示以下消息之一:
- 提供的两个属性:
"Identities and NamespacesIdentities are not allowed at the same time" - 未提供或列表为空:
"Identities are Empty for Delete Identity request."
请求
以下请求从特定数据集中删除与指定电子邮件地址关联的所有记录。 它使用推荐的namespacesIdentities格式。
curl -X POST \
https://platform.adobe.io/data/core/hygiene/workorder \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'Content-Type: application/json' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-d '{
"displayName": "Acme Loyalty - Customer Data Deletion",
"description": "Delete all records associated with the specified email addresses from the Acme_Loyalty_2023 dataset.",
"action": "delete_identity",
"datasetId": "7eab61f3e5c34810a49a1ab3",
"namespacesIdentities": [
{
"namespace": {
"code": "email"
},
"ids": [
"alice.smith@acmecorp.com",
"bob.jones@acmecorp.com",
"charlie.brown@acmecorp.com"
]
}
]
}'
下表描述了用于创建记录删除工作单的属性。
displayNamedescriptionactiondelete_identity。datasetIdALL、单个数据集ID或两个或多个数据集ID的逗号分隔列表(例如"id1,id2,id3")。 您无法将ALL与特定ID相结合。 与以前一样,单数据集请求的行为是,多数据集请求从每个列出的数据集中删除身份,ALL定向每个数据集。 数据集必须具有主身份映射或身份映射。 如果存在标识映射,则它将显示为名为identityMap的顶级字段。注意:数据集行的标识映射中可能具有多个标识,但只能将一个标识标记为主标识。 必须包含
"primary": true以强制id匹配主标识。使用
targetServices进行仅配置文件删除时,datasetId必须为ALL。targetServices["datalake", "identity", "profile", "ajo"])。 具有Customer Journey Analytics但没有Real-time Customer Profile权利的组织只能使用["datalake"]。 要将删除限制为仅删除与配置文件相关的数据并保留数据湖不变,请将此项设置为["identity", "profile", "ajo"](按任何顺序)。 此仅配置文件模式需要Real-Time CDP或Adobe Journey Optimizer权利,并且datasetId必须为ALL。identitiesidentities或namespacesIdentities之一。对象数组,每个对象具有namespace (具有code的对象,例如"email")和id (单一标识字符串)。 接受以向后兼容,由转换脚本生成。 服务在内部标准化此格式;行为相同。 请参阅上面的身份有效负载格式。响应
成功的响应将返回新记录删除工作单的详细信息。
{
"workorderId": "DI-95c40d52-6229-44e8-881b-fc7f072de63d",
"orgId": "8B1F2AC143214567890ABCDE@AcmeOrg",
"bundleId": "BN-c61bec61-5ce8-498f-a538-fb84b094adc6",
"action": "identity-delete",
"createdAt": "2035-06-02T09:21:00.000Z",
"updatedAt": "2035-06-02T09:21:05.000Z",
"operationCount": 1,
"targetServices": [
"profile",
"datalake",
"identity",
"ajo"
],
"status": "received",
"createdBy": "c.lannister@acme.com <c.lannister@acme.com> 7EAB61F3E5C34810A49A1AB3@acme.com",
"datasetId": "7eab61f3e5c34810a49a1ab3",
"datasetName": "Acme_Loyalty_2023",
"displayName": "Loyalty Identity Delete Request",
"description": "Schedule deletion for Acme loyalty program dataset"
}
下表描述了响应中的属性。
workorderIdorgIdbundleIdactioncreatedAtupdatedAtoperationCounttargetServicesstatuscreatedBydatasetIdALL。 对于多数据集请求,值反映提交的逗号分隔列表或单个ID。datasetNamedisplayNamedescription响应targetServices值与您的请求一致,或者在忽略时显示完整的默认设置(请参阅上面的响应表)。
多数据集和仅配置文件(API) multi-dataset-profile-only
以下选项仅通过API提供,在数据卫生UI中不受支持。 它们控制哪些数据集以及哪些服务会处理删除,从而支持多数据集提交和仅用于用户档案的目标服务请求。
下表汇总了每个选项的请求正文和行为更改的方式。
datasetId中使用逗号分隔的列表(如"id1,id2,id3")。 单个ID或ALL未更改。ALL时从所有数据集)中删除。targetServices和["identity", "profile", "ajo"](任何顺序)。 需要datasetId: "ALL"。多数据集请求
datasetId字段用逗号拆分:使用单个ID(与之前相同的行为)、以逗号分隔的ID列表或文本ALL。 要在一个工作单中从多个特定数据集中删除身份,请提供以逗号分隔的列表:
"datasetId": "6707eb36eef4d42ab86d9fbe,6643f00c16ddf51767fcf780"
然后,从列出的每个数据集中删除身份。 单个数据集请求始终有效;使用ALL定位每个数据集。 该值必须正好为以下值之一:ALL、单个数据集ID或以逗号分隔的两个或多个数据集ID(不将ALL与特定ID组合)。
仅配置文件(目标服务)
若要在保持数据湖不变的情况下仅删除标识和配置文件相关数据,请按照任意顺序包含具有这三个值的targetServices: identity、profile和ajo。 明确包括Identity、Profile和AJO;排除数据湖。 在此模式下,datasetId必须为ALL(用例为完全配置文件删除,而不是按数据集片段)。
以下示例创建仅配置文件记录删除工作单:
curl -X POST \
"https://platform.adobe.io/data/core/hygiene/workorder" \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'x-sandbox-id: {SANDBOX_ID}' \
-d '{
"action": "delete_identity",
"datasetId": "ALL",
"displayName": "Profile-only delete for specified identity",
"description": "Delete identity, profile, and AJO data only; datalake unchanged.",
"targetServices": ["identity", "profile", "ajo"],
"namespacesIdentities": [
{
"namespace": { "code": "email" },
"ids": ["user@example.com"]
}
]
}'
多数据集或仅用于用户档案的请求的成功响应遵循与其他工作单响应相同的形状。 返回的datasetId和targetServices反映请求中的值(或忽略targetServices时的完整默认列表),因此您可以确认提交的内容。
identity-delete。 如果API更改为使用其他值(如delete_identity),则将相应地更新此文档。将ID列表转换为JSON以用于记录删除请求(#convert-id-lists-to-json-for-record-delete-requests)
当您的标识符为CSV、TSV或TXT文件时,使用转换脚本为/workorder端点生成所需的JSON负载。 此方法在处理现有数据文件时特别有用。 有关现成的脚本和说明,请参阅csv到数据卫生GitHub存储库。
脚本输出 identities 格式 — 每个具有id的对象一个namespace。 API按原样接受此格式;您可以直接在POST正文中将生成的JSON发送到/workorder,而无需进行转换。 建议的格式为namespacesIdentities;请参阅创建记录删除工作单和标识有效负荷格式。
生成JSON负载
以下bash脚本示例演示了如何在Python或Ruby中运行转换脚本:
| code language-bash |
|---|
|
| code language-bash |
|---|
|
下表介绍了bash脚本中的参数。
verbosecolumnnamespaceemail)。 生成的JSON在每个对象的namespace.code属性中使用此属性。dataset-idALL。descriptionoutput-dir以下示例展示了从CSV、TSV或TXT文件转换而来的成功JSON有效负载。 它包含与指定命名空间关联的记录,用于删除由电子邮件地址标识的记录。
{
"action": "delete_identity",
"datasetId": "66f4161cc19b0f2aef3edf10",
"displayName": "output/sample-big-001.json",
"description": "a simple sample",
"identities": [
{
"namespace": {
"code": "email"
},
"id": "1"
},
{
"namespace": {
"code": "email"
},
"id": "2"
}
]
}
下表介绍了JSON有效负载中的属性。
actiondelete_identity。datasetIdALL。displayNamedescriptionidentities一个对象数组,每个对象包含:
namespace:具有code属性的对象,该属性指定身份命名空间(例如,“email”)。id:要删除此命名空间的身份值。
将生成的JSON数据提交到/workorder端点
脚本输出使用identities格式,API按原样接受该格式。 在将-d POST请求发送到curl端点时,使用转换的JSON有效负载作为请求正文(/workorder)。 有关完整的请求选项和验证规则,请参阅创建记录删除工作单。
检索特定记录删除工作单的详细信息 lookup
通过向/workorder/{WORKORDER_ID}发出GET请求,检索特定记录删除工作单的信息。 响应包括操作类型、状态、关联的数据集和用户信息以及审核元数据。
API格式
GET /workorder/{WORKORDER_ID}
{WORK_ORDER_ID}请求
curl -X GET \
https://platform.adobe.io/data/core/hygiene/workorder/DI-6fa98d52-7bd2-42a5-bf61-fb5c22ec9427 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}'
响应
成功的响应将返回指定记录删除工作单的详细信息。
{
"workorderId": "DI-6fa98d52-7bd2-42a5-bf61-fb5c22ec9427",
"orgId": "3C7F2AC143214567890ABCDE@AcmeOrg",
"bundleId": "BN-dbe3ffad-cb0b-401f-91ae-01c189f8e7b2",
"action": "identity-delete",
"createdAt": "2037-01-21T08:25:45.119Z",
"updatedAt": "2037-01-21T08:30:45.233Z",
"operationCount": 3,
"targetServices": [
"ajo",
"profile",
"datalake",
"identity"
],
"status": "received",
"createdBy": "g.baratheon@acme.com <g.baratheon@acme.com> C189F8E7B2@acme.com",
"datasetId": "d2f1c8a4b8f747d0ba3521e2",
"datasetName": "Acme_Marketing_Events",
"displayName": "Marketing Identity Delete Request",
"description": "Scheduled identity deletion for marketing compliance"
}
下表描述了响应中的属性。
workorderIdorgIdbundleIdactioncreatedAtupdatedAtoperationCounttargetServicesstatuscreatedBydatasetIdALL)。datasetNamedisplayNamedescription更新记录删除工作单 update
通过向name端点发出PUT请求,为记录删除工作单更新description和/workorder/{WORKORDER_ID}。
API格式
PUT /workorder/{WORKORDER_ID}
下表描述了此请求的参数。
{WORK_ORDER_ID}请求
curl -X PUT \
https://platform.adobe.io/data/core/hygiene/workorder/DI-893a6b1d-47c2-41e1-b3f1-2d7c2956aabb \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'x-sandbox-name: {SANDBOX_NAME}' \
-H 'Content-Type: application/json' \
-d '{
"name": "Updated Marketing Identity Delete Request",
"description": "Updated deletion request for marketing data"
}'
下表描述了可以更新的属性。
namedescription响应
成功的响应会返回更新的工作单请求。
{
"workorderId": "DI-893a6b1d-47c2-41e1-b3f1-2d7c2956aabb",
"orgId": "7D4E2AC143214567890ABCDE@AcmeOrg",
"bundleId": "BN-12abcf45-32ea-45bc-9d1c-8e7b321cabc8",
"action": "identity-delete",
"createdAt": "2038-04-15T12:14:29.210Z",
"updatedAt": "2038-04-15T12:30:29.442Z",
"operationCount": 2,
"targetServices": [
"profile",
"datalake"
],
"status": "received",
"createdBy": "b.tarth@acme.com <b.tarth@acme.com> 8E7B321CABC8@acme.com",
"datasetId": "1a2b3c4d5e6f7890abcdef12",
"datasetName": "Acme_Marketing_2024",
"displayName": "Updated Marketing Identity Delete Request",
"description": "Updated deletion request for marketing data",
"productStatusDetails": [
{
"productName": "Data Management",
"productStatus": "waiting",
"createdAt": "2024-06-12T20:11:18.447747Z"
},
{
"productName": "Identity Service",
"productStatus": "success",
"createdAt": "2024-06-12T20:36:09.020832Z"
},
{
"productName": "Profile Service",
"productStatus": "waiting",
"createdAt": "2024-06-12T20:11:18.447747Z"
},
{
"productName": "Journey Orchestrator",
"productStatus": "success",
"createdAt": "2024-06-12T20:12:19.843199Z"
}
]
}
workorderIdorgIdbundleIdactioncreatedAtupdatedAtoperationCounttargetServicesstatusreceived、validated、submitted、ingested、completed和failed。createdBydatasetIdALL)。datasetNamedisplayNamedescriptionproductStatusDetails列出请求下游进程的当前状态的数组。 每个对象包含:
productName:下游服务的名称。productStatus:下游服务的当前处理状态。createdAt:服务发布最新状态时的时间戳。
在将工作单提交到下游服务以开始处理之后,此属性可用。