-
Notifications
You must be signed in to change notification settings - Fork 0
Custom Profiles
NoahRJ edited this page Jun 15, 2026
·
1 revision
Since Iru resources must also contain metadata (e.g. active or name), each resource's on-disk representation is
actually a directory of associated files. Certain files are required for a directory to be recognized as a resource.
Tip
Additional files, such as a README.md, can be added without causing issues so long as they cannot be confused with
the required files.
Each profile requires:
- A directory within an iructl repository
profilesdirectory containing the profile's files - Exactly one
info.[plist|yaml|json]file containing the profile's associated metadata - Exactly one
.mobileconfigfile containing the profile's content
$ lsd --tree profiles/MyFancyProfile
MyFancyProfile
├── info.yaml
└── profile.mobileconfig
info.yaml
id: 54bef6b3-b25e-44b4-89fd-d528d73939e4
name: MyFancyProfile
active: false
mdm_identifier: com.kandji.profile.custom.54bef6b3-b25e-44b4-89fd-d528d73939e4
runs_on_mac: true
runs_on_iphone: true
runs_on_ipad: true
runs_on_tv: true
runs_on_vision: trueprofile.mobileconfig
<?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.0">
<dict>
<key>PayloadContent</key>
<array>
<dict/>
</array>
<key>PayloadDisplayName</key>
<string>MyFancyProfile</string>
<key>PayloadIdentifier</key>
<string>com.kandji.profile.custom.54bef6b3-b25e-44b4-89fd-d528d73939e4</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>54bef6b3-b25e-44b4-89fd-d528d73939e4</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>Getting Started
Working with Resources
- Populating Your Local Repository
- Editing Resources
- Self Service
- Pushing and Syncing
- Listing and Showing Resources
- Deleting Resources
- Blueprint Assignment
Reference
Python API Client