I recently needed to issue several dozen HTTP DELETE REST API calls of the form http://www.example.com/blah/n where n was a sequential version number. In this post I’ll show how to do this easily from the command line.
Update The nice folks at HockeyApp
just pointed out that as far as HockeyApp is concerned, there is an API
for deleting multiple versions. So while you don’t need to use seq
for deleting versions from HockeyApp, it’s still a good tool to be aware of.
@_aijaz_ Script looks good, but are you aware of the Multiple Versions Delete documented here? support.hockeyapp.net/kb/api/api-del…
— HockeyApp (@hockeyapp) June 6, 2013
As I was showing someone how to deploy apps to beta testers, I tried to upload a tiny demo app to my account at HockeyApp. It failed because I was over my storage limit. I had to delete old versions of my apps from Hockey so that I could continue using it without upgrading to the next higher tier of service.
One of my apps had 60 versions that wanted to delete. I definitely didn’t
want to delete them manually, so I turned to the API docs. Hockey’s help page
conveniently shows
the curl
command to delete a version:
curl \
-X DELETE \
-H "X-HockeyAppToken: 4567abcd8901ef234567abcd8901ef23" \
https://rink.hockeyapp.net/api/2/apps/1234567890abcdef1234567890abcdef
This is where the command line comes to the rescue. I needed to wrap the
curl command in a loop that goes from 1 to 60. To this I used the
seq
command that is available on
Mac OS and Linux:
# Send a bunch of sequential HTTP DELETE requests
$ TOKEN=4567abcd8901ef234567abcd8901ef23
$ APPID=1234567890abcdef1234567890abcdef
$ for version in `seq 60 1`
do curl -w "$version: Result: %{http_code}\n" \
-X DELETE \
-H "X-HockeyAppToken: $TOKEN" \
https://rink.hockeyapp.net/api/2/apps/$APPID/app_versions/$version
done
This will execute the curl
command for version 60 down to version 1
using the appropriate token and app ids. I hope you find this as useful
as I did.