Profile system jobs endpoint (Delete requests)
Adobe Experience Platform enables you to ingest data from multiple sources and build robust profiles for individual customers. Data ingested into Platform is stored in the Data Lake, and if the datasets have been enabled for Profile, that data is stored in the Real-Time Customer Profile data store as well. Occasionally it may be necessary to delete profile data associated with a dataset from the Profile store in order to remove data that is no longer needed or was added in error. This requires using the Real-Time Customer Profile API to create a Profile system job, or delete request
, that can also be modified, monitored, or removed if required.
Getting started
The API endpoint used in this guide is part of the Real-Time Customer Profile API. Before continuing, please review the getting started guide for links to related documentation, a guide to reading the sample API calls in this document, and important information regarding required headers that are needed to successfully make calls to any Experience Platform API.
View delete requests
A delete request is a long-running, asynchronous process, meaning that your organization may be running multiple delete requests at once. In order to view all delete requests that your organization is currently running, you can perform a GET request to the /system/jobs
endpoint.
You may also use optional query parameters to filter the list of delete requests returned in the response. To use multiple parameters, separate each parameter using an ampersand (&
).
API format
GET /system/jobs
GET /system/jobs?{QUERY_PARAMETERS}
start
start=4
limit
limit=10
page
page=2
sort
asc
) or descending (desc
) order. The sort parameter does not work when returning multiple pages of results. Example: sort=batchId:asc
Request
curl -X GET \
https://platform.adobe.io/data/core/ups/system/jobs \
-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}' \
Response
The response includes a “children” array with an object for each delete request containing the details of that request.
{
"_page": {
"count": 100,
"next": "K1JJRDpFaWc5QUwyZFgtMEpBQUFBQUFBQUFBPT0jUlQ6MSNUUkM6MiNGUEM6QWdFQUFBQVFBQWZBQUg0Ly9yL25PcmpmZndEZUR3QT0="
},
"children": [
{
"id": "9c2018e2-cd04-46a4-b38e-89ef7b1fcdf4",
"imsOrgId": "{ORG_ID}",
"batchId": "8d075b5a178e48389126b9289dcfd0ac",
"jobType": "DELETE",
"status": "COMPLETED",
"metrics": "{\"recordsProcessed\":5,\"timeTakenInSec\":1}",
"createEpoch": 1559026134,
"updateEpoch": 1559026137
},
{
"id": "3f225e7e-ac8c-4904-b1d5-0ce79e03c2ec",
"imsOrgId": "{ORG_ID}",
"dataSetId": "5c802d3cd83fc114b741c4b5",
"jobType": "DELETE",
"status": "PROCESSING",
"metrics": "{\"recordsProcessed\":0,\"timeTakenInSec\":15}",
"createEpoch": 1559025404,
"updateEpoch": 1559025406
}
]
}
_page.count
_page.next
"next"
value provided.jobType
"DELETE"
.status
"NEW"
, "PROCESSING"
, "COMPLETED"
, "ERROR"
.metrics
"recordsProcessed"
) and the time in seconds that the request has been processing, or how long the request took to complete ("timeTakenInSec"
).Create a delete request create-a-delete-request
Initiating a new delete request is done through a POST request to the /systems/jobs
endpoint, where the ID of the dataset or batch to be deleted is provided in the body of the request.
Delete a dataset and associated profile data
In order to delete a dataset and all profile data associated with the dataset from the Profile store, the dataset ID must be included in the body of the POST request. This action will delete ALL data for a given dataset. Experience Platform allows you to delete datasets based on both record and time series schemas.
API format
POST /system/jobs
Request
curl -X POST \
https://platform.adobe.io/data/core/ups/system/jobs \
-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}' \
-d '{
"dataSetId": "5c802d3cd83fc114b741c4b5"
}'
dataSetId
Response
A successful response returns the details of the newly created delete request, including a unique, system-generated, read-only ID for the request. This can be used to look up the request and check its status. The status
for the request at time of creation is "NEW"
until it begins processing. The dataSetId
in the response should match the dataSetId
sent in the request.
{
"id": "3f225e7e-ac8c-4904-b1d5-0ce79e03c2ec",
"imsOrgId": "{ORG_ID}",
"dataSetId": "5c802d3cd83fc114b741c4b5",
"jobType": "DELETE",
"status": "NEW",
"createEpoch": 1559025404,
"updateEpoch": 1559025406
}
id
dataSetId
Delete a batch
In order to delete a batch, the batch ID must be included in the body of the POST request. Please be advised that you cannot delete batches for datasets based on record schemas. Only batches for datasets based on time series schemas may be deleted.
For more information on record and time series behavior, please review the section on XDM data behaviors in the XDM System overview.
API format
POST /system/jobs
Request
curl -X POST \
https://platform.adobe.io/data/core/ups/system/jobs \
-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}' \
-d '{
"batchId": "8d075b5a178e48389126b9289dcfd0ac"
}'
batchId
Response
A successful response returns the details of the newly created delete request, including a unique, system-generated, read-only ID for the request. This can be used to look up the request and check its status. The "status"
for the request at time of creation is "NEW"
until it begins processing. The "batchId"
value in the response should match the "batchId"
value sent in the request.
{
"id": "9c2018e2-cd04-46a4-b38e-89ef7b1fcdf4",
"imsOrgId": "{ORG_ID}",
"batchId": "8d075b5a178e48389126b9289dcfd0ac",
"jobType": "DELETE",
"status": "NEW",
"createEpoch": 1559026131,
"updateEpoch": 1559026132
}
id
batchId
If you attempt to initiate a delete request for a Record dataset batch, you will encounter a 400-level error, similar to the following:
{
"requestId": "bc4eb29f-63a8-4653-9133-71238884bb81",
"errors": {
"400": [
{
"code": "500",
"message": "Batch can only be specified for EE type 'a294e36d382649dab2cc6ad64a41b674'"
}
]
}
}
View a specific delete request view-a-specific-delete-request
To view a specific delete request, including details such as its status, you can perform a lookup (GET) request to the /system/jobs
endpoint and include the ID of the delete request in the path.
API format
GET /system/jobs/{DELETE_REQUEST_ID}
{DELETE_REQUEST_ID}
Request
curl -X GET \
https://platform.adobe.io/data/core/ups/system/jobs/9c2018e2-cd04-46a4-b38e-89ef7b1fcdf4 \
-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}' \
Response
The response provides the details of the delete request, including its updated status. The ID of the delete request in the response (the "id"
value) should match the ID sent in the request path.
{
"id": "9c2018e2-cd04-46a4-b38e-89ef7b1fcdf4",
"imsOrgId": "{ORG_ID}",
"batchId": "8d075b5a178e48389126b9289dcfd0ac",
"jobType": "DELETE",
"status": "COMPLETED",
"metrics": "{\"recordsProcessed\":5,\"timeTakenInSec\":1}",
"createEpoch": 1559026134,
"updateEpoch": 1559026137
}
jobType
"DELETE"
.status
"NEW"
, "PROCESSING"
, "COMPLETED"
, "ERROR"
.metrics
"recordsProcessed"
) and the time in seconds that the request has been processing, or how long the request took to complete ("timeTakenInSec"
).Once the delete request status is "COMPLETED"
you can confirm that the data has been deleted by attempting to access the deleted data using the Data Access API. For instructions on how to use the Data Access API to access datasets and batches, please review the Data Access documentation.
Remove a delete request
Experience Platform allows you to delete a previous request, which may be useful for a number of reasons including if the delete job did not complete or became stuck in the processing stage. In order to remove a delete request, you can perform a DELETE request to the /system/jobs
endpoint and include the ID of the delete request that you wish to remove to the request path.
API format
DELETE /system/jobs/{DELETE_REQUEST_ID}
Request
curl -X POST \
https://platform.adobe.io/data/core/ups/system/jobs/9c2018e2-cd04-46a4-b38e-89ef7b1fcdf4 \
-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}' \
Response
A successful delete request returns HTTP Status 200 (OK) and an empty response body. You can confirm the request was deleted by performing a GET request to view the delete request by its ID. This should return an HTTP Status 404 (Not Found), indicating the delete request was removed.
Next steps
Now that you know the steps involved in deleting datasets and batches from the Profile store within Experience Platform, you can safely delete data that has been added erroneously or that your organization no longer needs. Please be mindful that a delete request cannot be undone, therefore you should only delete data that you are confident you do not need now and will not need in the future.