Skip to main content

We are trying to create a new mobile device configuration profile.
From what I can see in https://developer.jamf.com/#/mobiledeviceconfigurationprofiles/createMobileDeviceConfigurationProfileById (by the way there is a mismatch between the example and the model. Example uses configuration_profile as root node and model call it mobile_device_configuration_profile, we had tried both without success)

So we are doing POST to /JSSResource/mobiledeviceconfigurationprofiles/id/0

sending the following body (we are trying to create a configuration profile which will create an airplay white list and scope it to a given device (10)):

<?xml version="1.0" encoding="utf-8"?>
<configuration_profile> <general> <name>API airplay whitelist 50:32:37:ab:6d:6d</name> <deployment_method>Install Automatically</deployment_method> <payloads> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1"> <dict> <key>PayloadUUID</key> <string>B1E156F0-AD1E-11E9-ACAC-697FF5EF5825</string> <key>PayloadType</key> <string>Configuration</string> <key>PayloadOrganization</key> <string>XXXXXXXXXXXX</string> <key>PayloadIdentifier</key> <string>B1E156F0-AD1E-11E9-ACAC-697FF5EF5825</string> <key>PayloadDisplayName</key> <string>Airplay testing 1</string> <key>PayloadDescription</key><string/> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadEnabled</key><true/> <key>PayloadRemovalDisallowed</key><true/> <key>PayloadContent</key> <array> <dict> <key>PayloadUUID</key> <string>B1E17E00-AD1E-11E9-ACAC-697FF5EF5825</string> <key>PayloadType</key> <string>com.apple.airplay</string> <key>PayloadOrganization</key> <string>XXXXXXXXXXXX</string> <key>PayloadIdentifier</key> <string>A1AD9C76-D9ED-43EC-BB2B-6031892B4EB8</string> <key>PayloadDisplayName</key> <string>com.apple.airplay</string> <key>PayloadDescription</key><string/> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadEnabled</key><true/> <key>Whitelist</key> <array> <dict> <key>DeviceID</key> <string>50:32:37:ab:6d:6d</string> </dict> </array> </dict> </array> </dict> </plist> </payloads> </general> <scope> <mobile_devices> <mobile_device> <id>10</id> </mobile_device> </mobile_devices> </scope>
</configuration_profile>

We are getting:

<html> <head> <title>Status page</title> </head> <body style="font-family: sans-serif;"> <p style="font-size: 1.2em;font-weight: bold;margin: 1em 0px;">Bad Request</p> <p>Error in XML file. Possible mismatch between resource specified in the URL and XML file</p> <p>You can get technical details <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">here</a>.<br> Please continue your visit at our <a href="/">home page</a>. </p> </body> </html> "', error: '<html> <head> <title>Status page</title> </head> <body style="font-family: sans-serif;"> <p style="font-size: 1.2em;font-weight: bold;margin: 1em 0px;">Bad Request</p> <p>Error in XML file. Possible mismatch between resource specified in the URL and XML file</p> <p>You can get technical details <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">here</a>.<br> Please continue your visit at our <a href="/">home page</a>. </p> </body> </html>

I would need to know which xml I need to send to create a mobile device configuration profile and scope it to some devices (given their ids)

Regards

You've got 2 XML declarations in your POST.

Sam Fortuna posted up a package with templates for the API to use with tools like POSTMAN or PAW on the jamf-api Slack channel. The template from that as a cURL is:

curl -X "POST" "https://urlJSSResource/mobiledeviceconfigurationprofiles/id/:id" 
     -H 'Content-Type: text/plain; charset=utf-8' 
     -d $'<configuration_profile>
    <general>
        <name>WiFi</name>
        <description/>
        <site>
            <id>-1</id>
            <name>None</name>
        </site>
        <category>
            <id>-1</id>
            <name>No category assigned</name>
        </category>
        <uuid>b5b6e118-b73c-4aab-bdfd-0f281a1e5fe6</uuid>
        <deployment_method>Install Automatically</deployment_method>
        <redeploy_on_update>Newly Assigned</redeploy_on_update>
        <redeploy_days_before_certificate_expires>0</redeploy_days_before_certificate_expires>
        <payloads>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1"&gt;&lt;dict&gt;&lt;key&gt;PayloadUUID&lt;/key&gt;&lt;string&gt;b5b6e118-b73c-4aab-bdfd-0f281a1e5fe6&lt;/string&gt;&lt;key&gt;PayloadType&lt;/key&gt;&lt;string&gt;Configuration&lt;/string&gt;&lt;key&gt;PayloadOrganization&lt;/key&gt;&lt;string&gt;SAMF&lt;/string&gt;&lt;key&gt;PayloadIdentifier&lt;/key&gt;&lt;string&gt;b5b6e118-b73c-4aab-bdfd-0f281a1e5fe6&lt;/string&gt;&lt;key&gt;PayloadDisplayName&lt;/key&gt;&lt;string&gt;WiFi&lt;/string&gt;&lt;key&gt;PayloadDescription&lt;/key&gt;&lt;string/&gt;&lt;key&gt;PayloadVersion&lt;/key&gt;&lt;integer&gt;1&lt;/integer&gt;&lt;key&gt;PayloadEnabled&lt;/key&gt;&lt;true/&gt;&lt;key&gt;PayloadRemovalDisallowed&lt;/key&gt;&lt;true/&gt;&lt;key&gt;PayloadContent&lt;/key&gt;&lt;array&gt;&lt;dict&gt;&lt;key&gt;PayloadUUID&lt;/key&gt;&lt;string&gt;3726EF50-305E-4670-9171-5391FB115E8E&lt;/string&gt;&lt;key&gt;PayloadType&lt;/key&gt;&lt;string&gt;com.apple.wifi.managed&lt;/string&gt;&lt;key&gt;PayloadOrganization&lt;/key&gt;&lt;string&gt;SAMF&lt;/string&gt;&lt;key&gt;PayloadIdentifier&lt;/key&gt;&lt;string&gt;3726EF50-305E-4670-9171-5391FB115E8E&lt;/string&gt;&lt;key&gt;PayloadDisplayName&lt;/key&gt;&lt;string&gt;WiFi (JAMF Software Test Network)&lt;/string&gt;&lt;key&gt;PayloadDescription&lt;/key&gt;&lt;string/&gt;&lt;key&gt;PayloadVersion&lt;/key&gt;&lt;integer&gt;1&lt;/integer&gt;&lt;key&gt;PayloadEnabled&lt;/key&gt;&lt;true/&gt;&lt;key&gt;HIDDEN_NETWORK&lt;/key&gt;&lt;false/&gt;&lt;key&gt;Password&lt;/key&gt;&lt;string&gt;samplePass&lt;/string&gt;&lt;key&gt;EncryptionType&lt;/key&gt;&lt;string&gt;WPA&lt;/string&gt;&lt;key&gt;AutoJoin&lt;/key&gt;&lt;true/&gt;&lt;key&gt;CaptiveBypass&lt;/key&gt;&lt;false/&gt;&lt;key&gt;ProxyType&lt;/key&gt;&lt;string&gt;None&lt;/string&gt;&lt;key&gt;SSID_STR&lt;/key&gt;&lt;string&gt;JAMF Software Test Network&lt;/string&gt;&lt;/dict&gt;&lt;/array&gt;&lt;/dict&gt;&lt;/plist&gt;</payloads>
    </general>
    <scope>
        <all_mobile_devices>false</all_mobile_devices>
        <all_jss_users>false</all_jss_users>
    </scope>
    <self_service>
        <self_service_description>null</self_service_description>
        <security>
            <removal_disallowed>Never</removal_disallowed>
        </security>
        <self_service_icon/>
        <feature_on_main_page>false</feature_on_main_page>
        <self_service_categories/>
    </self_service>
</configuration_profile>'

Opss sorry I forgot to to update. You are right we were sending the payloads node in plain (without escaping it).
After fixing it worked (and after adding the site it applies to)


@calarcon 

您好!請教一下
我有嘗試使用此指令

curl -k -v -u admin:1234 -T /path/temp/123.xml -X POST https://jamf.cloud.com/JSSResource/mobiledeviceconfigurationprofiles/id/33

但看起來沒有作用,請問您的使用方式可以分享一下嗎?感謝