Product firmware upload API

Hi,
I created a product (although I didn’t need it), to be able to release my firmware when my device wakes up from deep sleep.
I’m building my application locally and deploy with the particle cli.

It looks like the only way to upload a firmware for a product is using the product console at https://console.particle.io/your_product/firmware/upload
but this breaks my workflow.
There is no particle cli command and no documented Cloud API.

Inspecting the upload page I found that I can upload a firmware with

curl "https://api.particle.io/v1/products/$PRODUCT/firmware" \
-H "Authorization: Bearer $TOKEN" \
-F version=$VERSION -F current=false -F title="$TITLE" -F binary=@"$BINARY"

I can get the list of firmware uploaded with:

curl "https://api.particle.io/v1/products/$PRODUCT/firmware" \
-H "Authorization: Bearer $TOKEN"

and a single firmware uploaded with:

curl "https://api.particle.io/v1/products/$PRODUCT/firmware/$VERSION" \
-H "Authorization: Bearer $TOKEN"

I couldn’t find a way to delete a firmware: calling the last URL above with -X DELETE I get a 404.

I was wondering if there was a cli command for this and a way to delete an uploaded firmware, even via API.

Thanks
Roberto

Hey Roberto!

Nice sleuthing :smile:. We are planning to make these API endpoints available via the CLI and particle-api-js soon.

We do not currently support firmware deletion via our API.

Thanks!

Jeff

1 Like

Particle should add an option to delete firmware via the api! Lots of people including myself make the mistake of releasing firmware in early project stages only later realizing what they wanted was to mark the device as development and update its firmware directly instead of performing releases. It’s all part of the learning curve.

If there are no devices currently registered under a product running one of the released firmware versions, then there should be a way to delete those firmware release versions.

Hi is this still the way to do this?

I'd prefer a way to not use webscraping to do this, but I want it in my CI pipeline.

Update for future search results: seems like it is supported nowadays:
https://docs.particle.io/reference/device-cloud/api/#upload-product-firmware