Permanently delete an attribute description from the system
DELETE/v2/attribute-descriptions/:lookupKey/:lookupValue
Remove an attribute description and all its configuration permanently from the system.
This operation will delete the attribute description schema including all metadata and configuration settings. This is a destructive operation that cannot be undone.
What happens depends on the class:
- ORDER and ORDER_ITEM are refused with a 409 while anything still references them — an attribute value recorded on a processed order, or a live reference held by a cart or a tender. There is no override. Remove the references first, or archive the description rather than deleting it.
- Every other class (PRODUCT, CATEGORY, CLUSTER, COMPANY, CONTACT, CUSTOMER) is deleted outright. No usage check runs at all, and cart and tender are never contacted, because neither can hold a reference to a non-order class.
Warning: for a non-order class this destroys every attribute built on the description, and the values those attributes hold, in the same transaction — however many there are and with no confirmation step. Check what depends on the description before calling this.
The deletion process:
- Removes the attribute description record completely
- Cascades to its attributes and sweeps the attribute values they leave orphaned
- Cleans up associated metadata and configuration
- Maintains system integrity and consistency
- Cannot be reversed once completed
Request
Responses
- 200
- 400
- 401
- 404
- 409
- 500
- 503
Successfully deleted the attribute description
Invalid request parameters or validation errors
Authentication required - Invalid or missing OAuth2 token
Attribute description not found with the specified criteria
An ORDER or ORDER_ITEM attribute description is still in use and cannot be deleted. There is no override — remove whatever references it first.
Only those two classes can produce this response. Every other class is deleted outright whatever its usage, so a client never has to handle a 409 for a PRODUCT, CATEGORY, CLUSTER, COMPANY, CONTACT or CUSTOMER description.
The body carries the per-source breakdown that justifies the refusal, so a client can show what is holding the description rather than string-matching the message. usage.carts and usage.tenders count affected CARTS and TENDERS, not individual matching rows.
attributeClass is reported as the enum NAME — ORDER or ORDER_ITEM — which is the form the GraphQL API uses for this class everywhere. Note it is NOT the lowercase form the resourceType query parameter takes (order, orderItem).
Internal server error occurred while deleting the attribute description.
Safe to retry: the usage check runs before the delete transaction and only ever reads, so a failure here leaves the tenant exactly as it was.
Whether the description is still in use could not be determined because cart-service or tender-service was unreachable. The delete fails closed and nothing was changed; retry once the dependency recovers. Only ORDER and ORDER_ITEM descriptions are probed against those services.