I have been facing this very problem myself trying to make an API integration that maintains Event entries in Salesforce.
All of these examples are in json but they should be easily translatable to csv and xml respectively.
Deleting from the Event object requires a job, as with all operations, and the example job request that I have been using and sent to <your salesforce site>/services/async/48.0/job/ looks as follows:
{
"operation": "delete",
"object": "Event",
"concurrencyMode": "Parallel",
"contentType": "JSON"
}
The server then replies with something along the lines of (some items omitted for brevity)
{
"apexProcessingTime": 0,
"apiActiveProcessingTime": 0,
"apiVersion": 48.0,
"assignmentRuleId": null,
"concurrencyMode": "Parallel",
"contentType": "JSON",
...
"numberRetries": 0,
"object": "Event",
"operation": "delete",
"state": "Open",
"systemModstamp": "2020-04-08T15:13:42.000+0000",
"totalProcessingTime": 0
}
You then create batches as per norm at <your salesforce>/services/async/48.0/job/<jobId>/batch/ except delete batches can only contain Ids for the items you want to delete, for instance [{"Id":"00U5I00000145XcUAI"},{"Id":"00U5I00000145XdUAI"},{"Id":"00U5I00000145XeUAI"},{"Id":"00U5I00000145XgUAI"},{"Id":"00U5I00000145XhUAI"}].
After the batch completes and either fails or completes successfully, you can retrieve your results by sending the usual requests to get your result ids and then the results from those result ids. I didn't do anything different from a query operation on the Bulk API.
In my case, the server responded with
[ {
"success" : true,
"created" : false,
"id" : "00U5I00000145XcUAI",
"errors" : [ ]
}, {
"success" : true,
"created" : false,
"id" : "00U5I00000145XdUAI",
"errors" : [ ]
}, {
"success" : true,
"created" : false,
"id" : "00U5I00000145XeUAI",
"errors" : [ ]
}, {
"success" : true,
"created" : false,
"id" : "00U5I00000145XgUAI",
"errors" : [ ]
}, {
"success" : true,
"created" : false,
"id" : "00U5I00000145XhUAI",
"errors" : [ ]
} ]
The lack of an official guide on these operations that are very possible to do surprised me, but here's hoping that someone can get some use of this belated reply to your question.