Can we add packages to the JSS thru the API?
there has got to be a way to stub in packages. There is no documentation on how to do this however. I've tried
curl -k -v -u user:password https:/jss.host.com:8443/JSSResource/packages/id/{somenumber} -T Untitled.xml -X POST
heres my xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<packages>
<package>
<name>
test.pkg
</name>
</package>
</packages>
doesn't work. Tested with v9.12
To address the OP's question, the answer is not exactly - you can POST metadata about the pkg(filename, category, name, etc.) but the JSS instance doesn't necessarily directly interact with the file distribution share.
Mr. Robson, you should be getting hints in some sort of a valid response in your verbose output from curl, here's valid XML I just used:
<?xml version="1.0" encoding="UTF-8"?><package><id>1</id><name>VLC-2.0.8.pkg</name><category>VLC</category><filename>VLC-2.0.8.pkg</filename><info/><notes/><priority>10</priority><reboot_required>false</reboot_required><fill_user_template>false</fill_user_template><fill_existing_users>false</fill_existing_users><boot_volume_required>false</boot_volume_required><allow_uninstalled>false</allow_uninstalled><os_requirements/><required_processor>None</required_processor><switch_with_package>Do Not Install</switch_with_package><install_if_reported_available>false</install_if_reported_available><reinstall_option>Do Not Reinstall</reinstall_option><triggering_files/><send_notification>false</send_notification></package>
POST'ing a category at an unused id with valid XML works just the same.
Allister
Ok working off @Banks's response I was able to get this to work
curl -k -v -u user:password https:/jss.host.com:8443/JSSResource/packages -T xmlFile.xml -X POST
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<package>
<name>
test.pkg
</name>
<filename>test.pkg</filename>
</package>
You could add the category key etc,etc, but this seems to add the reference to the file. You would need to add the file to your distribution point with something else. The api will not work for that, should be easy to do though.
Using the example herein, I was able to auth to my cloud instance, putting a file there. Utilizing a web browser, I navigated to the URL, which just showed me a wall of text, but the text was all my package names! Going back to terminal, and using the following syntax:
curl -L -o [Numeric Value assigned by JSS]Package_Name.pkg --user apiuser:password https:/your.jss.instance:443/JSSResource/packages/22test_package.pkg -X POST
It downloaded without issue!
Reply
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.