# Software/Firmware upload via webSDK

**URL:** <https://community.cumulocity.com/t/software-firmware-upload-via-websdk/12831>\
**Category:** Forum\
**Tags:** device-management\
**Created:** [October 16, 2025, 12:34pm UTC](https://community.cumulocity.com/t/software-firmware-upload-via-websdk/12831 "2025-10-16T12:34:01Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![paul.de-la-porte-des](https://dub1.discourse-cdn.com/flex005/user_avatar/community.cumulocity.com/paul.de-la-porte-des/32/32537_2.png) [@paul.de-la-porte-des](https://community.cumulocity.com/u/paul.de-la-porte-des)\
**Post date:** [October 16, 2025, 12:34pm UTC](https://community.cumulocity.com/t/software-firmware-upload-via-websdk/12831/1 "2025-10-16T12:34:01Z")

</div>

Hello,

I want to programmaticaly upload a software on the platform via the websdk. I managed to create the software itself (managedObject with fragment software), but I don’t understand how to upload a binary and attach it to the software object

---

<div class="post-metadata">

**Author:** ![Robert\_Neale](https://dub1.discourse-cdn.com/flex005/user_avatar/community.cumulocity.com/robert_neale/32/31965_2.png) [@Robert\_Neale](https://community.cumulocity.com/u/Robert_Neale)\
**Post date:** [October 16, 2025, 1:11pm UTC](https://community.cumulocity.com/t/software-firmware-upload-via-websdk/12831/2 "2025-10-16T13:11:24Z")

</div>

The UI does it in 4 POST operations..

1. POST /inventory/binaries to upload the binary. See [Cumulocity - OpenAPI](https://cumulocity.com/api/core/#operation/postBinariesCollectionResource)
2. POST /inventory/managedObjects to create the software managed object. See [Cumulocity - OpenAPI](https://cumulocity.com/api/core/#operation/postManagedObjectCollectionResource)
3. POST /inventory/managedObjects/\<id returned in 2 above\>/childAdditions with payload similar to (binary id from first POST)..

 ![image](https://europe1.discourse-cdn.com/flex005/uploads/cumulocity/original/3X/f/d/fd26280c97bb0c4c0cb06efab3e97ee6983bba1b.png)

This creates a Software Binary managed object.

1. POST /inventory/managedObjects/\<id returned in 3 above\>/childAdditions with a payload similar to (id is of the binary created in 1)…

---

<div class="post-metadata">

**Author:** ![Tristan\_Bastian](https://dub1.discourse-cdn.com/flex005/user_avatar/community.cumulocity.com/tristan_bastian/32/18259_2.png) [@Tristan\_Bastian](https://community.cumulocity.com/u/Tristan_Bastian)\
**Post date:** [October 16, 2025, 1:37pm UTC](https://community.cumulocity.com/t/software-firmware-upload-via-websdk/12831/3 "2025-10-16T13:37:47Z")

</div>

Hi @paul.de-la-porte-des,

in addition to the API calls mentioned by Robert above, you might also be able to reuse some of the functionality provided by the [RepositoryService](https://resources.cumulocity.com/documentation/websdk/ngx-components/injectables/RepositoryService.html) that is part of the `@c8y/ngx-components` lib.

---

<div class="post-metadata">

**Author:** ![paul.de-la-porte-des](https://dub1.discourse-cdn.com/flex005/user_avatar/community.cumulocity.com/paul.de-la-porte-des/32/32537_2.png) [@paul.de-la-porte-des](https://community.cumulocity.com/u/paul.de-la-porte-des)\
**Post date:** [October 16, 2025, 2:09pm UTC](https://community.cumulocity.com/t/software-firmware-upload-via-websdk/12831/4 "2025-10-16T14:09:58Z")

</div>

I don’t understand the steps 3 and 4 : why is there a double “/” in 3rd step url ? And how are the objects linked ? Could you explain which object is a child or is linked to which object in the end ? I’m sorry, I’m really confused…

---

<div class="post-metadata">

**Author:** ![Robert\_Neale](https://dub1.discourse-cdn.com/flex005/user_avatar/community.cumulocity.com/robert_neale/32/31965_2.png) [@Robert\_Neale](https://community.cumulocity.com/u/Robert_Neale)\
**Post date:** [October 16, 2025, 2:40pm UTC](https://community.cumulocity.com/t/software-firmware-upload-via-websdk/12831/5 "2025-10-16T14:40:50Z")

</div>

The double / is just a typo. I’ve corrected it and added some more comments to the above.

Ultimately the Software managed object has a child addition that points to the Software Binary managed object and this has a childAddition that points to the binary itself.
