Minimal example demonstrating a bug in the Tooling Composite API where deleting Tooling API records fails.
Important
A green status badge indicates that the issue was successfully reproduced.
A red status badge means the issue was fixed or the pipeline failed for another reason.
It is not possible to delete multiple records of Tooling API Objects (e.g. Flow, SourceMember,...) via /services/data/v63.0/tooling/composite/sobjects although this is documented here:
Error:
{
"errorCode": "NOT_FOUND",
"message": "The requested resource does not exist"
}For regular SObjects (e.g. Account, Contact,...) this process works fine using /services/data/v63.0/composite/sobjects:
Note
Mind the slightly different endpoint for Tooling API vs REST API:
-/services/data/v63.0/tooling/composite/sobjects
+/services/data/v63.0/composite/sobjectsCreate two SourceMember Tooling API records and attempt to delete them in a composite request:
sf data record create --use-tooling-api --sobject SourceMember --values "MemberType='FakeType' MemberName='Fake1'"
sf data record create --use-tooling-api --sobject SourceMember --values "MemberType='FakeType' MemberName='Fake2'"
idsCommaSeparated="$(sf data query --use-tooling-api --query "SELECT Id FROM SourceMember WHERE MemberType='FakeType'" --result-format csv | tail -n +2 | paste -sd "," -)"
sf api request rest --method DELETE --body "formdata" "/services/data/v63.0/tooling/composite/sobjects?allOrNone=true&ids=${idsCommaSeparated}"Output:
[
{
"errorCode": "NOT_FOUND",
"message": "The requested resource does not exist"
}
]Delete records sequentially:
while read -r id; do
sf data record delete --use-tooling-api --sobject SourceMember --record-id "${id}"
done < <(sf data query --use-tooling-api --query "SELECT Id FROM SourceMember WHERE MemberType='FakeType'" --result-format csv | tail -n +2)Output:
Querying Data... done
Successfully deleted record: 0MZS8000009P5CEOA0.
Deleting Record... Success
Successfully deleted record: 0MZS8000009PBHdOAO.
Deleting Record... Success
