Skip to main content
Question

Unable to create a new mobiledeviceconfigurationprofiles

  • July 23, 2019
  • 3 replies
  • 36 views

Forum|alt.badge.img+3

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

3 replies

Tangentism
Forum|alt.badge.img+10
  • Honored Contributor
  • July 23, 2019

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>'

Forum|alt.badge.img+3
  • Author
  • New Contributor
  • July 23, 2019

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)


Forum|alt.badge.img+6
  • New Contributor
  • September 10, 2021

@calarcon 

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

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

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