Delete Catalog Objects and Query Deleted Objects

Applies to: Catalog API

Learn how to delete a catalog object and retrieve it for auditing.

Link to section

Delete a catalog object

When no longer needed, an object in the catalog can be deleted. A deleted catalog object remains in the catalog and can be queried for auditing purposes, but is otherwise inoperable.

Using the Catalog API, you can delete a catalog object by calling the DeleteCatalogObject endpoint for a single object or the BatchDeleteCatalogObjects endpoint to handle multiple objects.

Important

If your application routinely deletes and recreates an entire catalog, the catalog size can double with each cycle. For example, deleting and recreating a catalog of 1,000 items results in 2,000 objects (1,000 deleted and 1,000 recreated). Each cycle adds the number of recreated objects to the total. This can degrade the performance of bulk operations, eventually causing timeouts.

Link to section

Archive option

If your application might need to restore a deleted object, it's better to archive it. When orders and inventory reference an archived item, unarchiving keeps those references valid. Deleting and recreating an item breaks these references, and you cannot update completed orders or inventory adjustments to point to the recreated item.

Link to section

Request: Delete a catalog object

The following example shows how to delete a single catalog object as identified by its ID (ZFJKJAQSFYULGXU6JBC6LDVL). The object is of the ITEM type and has one variation (XXHPAGFTJOZLMSMYWOSFGCTD) associated with it.

Delete catalog object

Link to section

Response: Delete a catalog object

If successful, the request returns a response similar to the following:

{ "deleted_object_ids": [ "G5I2JPKMXSTHRIXIFORI53YX", "XXHPAGFTJOZLMSMYWOSFGCTD" ], "deleted_at": "2023-07-19T21:11:04.203Z" }

The operation deletes the item (G5I2JPKMXSTHRIXIFORI53YX) and the contained item variation (XXHPAGFTJOZLMSMYWOSFGCTD), making them inoperable except for being searchable for auditing purposes.

Link to section

Query deleted objects

To query deleted catalog objects, call SearchCatalogObjects while setting "include_deleted_objects":true and other applicable query expressions. The result contains both active and deleted objects.

Link to section

Request: Query deleted objects

The following example request shows how to call SearchCatalogObjects to query items, including deleted ones:

Search catalog objects

Link to section

Response: Query deleted objects

The successful response is similar to the following:

The returned result contains both the deleted (with "is_deleted":true) and active (with "is_deleted":false) catalog objects of the specified types.

SearchCatalogObjects is the only operation that can be applied on deleted catalog objects. Any other operation attempted on a deleted object results in an error.

Calling RetrieveCatalogObject against a deleted object ID returns a 404 Not found response.

Link to section

Other operations on deleted objects

Other than querying by SearchCatalogObjects, you cannot perform any operations on deleted catalog objects. In particular, you cannot undelete or otherwise modify a deleted CatalogObject instance. Any attempt to do so returns a 400 response indicating an invalid operation to update a non-existent object.

If a deleted catalog object must be restored, your application needs to create a new object with the properties of the deleted object. However, the ID and version of the new object won't match those of the deleted object.