Skip to content

Edit User Profile

Victor Deon edited this page Oct 9, 2025 · 1 revision

The Edit User Profile tool facilitates user input for a range of account and device details based on the information available in Jamf Pro. This tool simplifies the configuration process by presenting users with a dialog box to make their selections.

Users can supply:

  • User Name
  • Full Name
  • E‑Mail
  • Computer Name
  • Asset Tag
  • Room
  • Position
  • Building
  • Department

All inputs are collected via a single dialog and then updated in Jamf Pro.

Quick Start

To launch the tool and prompt for all fields, including support‑team name and custom window sizing:

Example Command

sudo rocketman EditUserProfile \
--clientId "..." \
--clientSecret "..." \
--requiredFields username email \
--enableFields username fullname email room position building department computername assettag

This command will:

  1. Retrieve available buildings and/or departments from Jamf Pro using the provided API credentials.
  2. Display a dialog box prompting the user for all fields.
  3. Define a description.
  4. Clear out the title field so the default banner can stand by itself.
  5. Update the user's information in Jamf Pro.

Command Options

Required Parameters

--enableFields [string]

Specifies a space-separated list of fields that will be shown in the dialog.

  • Type: string (space-separated)

  • Required: Yes

  • Options: username, fullname, email, room, position, building, department, site, computername, assettag

  • Example:

    --enableFields assettag department

Note: If building, department, or site is enabled, it will get all the available Buildings, Departments, or Sites (respectively) and display them to the user as a dropdown.

Required Parameters (In Certain Situations)

--clientId [string]

Specifies the Client ID for Jamf API authentication. Required if building, department, site, or assettag is defined for --enableFields. It is recommended to Encrypt these credentials using RCC's Encrypt tool.

  • Type: string
  • Permissions: Create a New API Role with the following permissions:
    • Read Buildings (If building is selected for --enabledFields)
    • Read Departments (If department are selected for --enabledFields)
    • Read Sites (If site are selected for --enabledFields)
    • Read Computers (If assettag is selected for --enabledFields, or if extensionAttribute is configured)
    • Update Computers (If assettag is selected for --enabledFields, or if extensionAttribute is configured)
    • Read Extension Attributes (If extensionAttribute is configured)
  • Example:
    --clientId "myclientId" OR --clientId "ENC:myencryptedclientid"

--clientSecret [string]

Specifies the Client Secret for Jamf API authentication. Required if building, department, site, or assettag is defined for --enableFields. It is highly recommended to Encrypt these credentials using RCC's Encrypt tool.

  • Type: string
  • Permissions: Create a New API Role with the following permissions:
    • Read Buildings (If building is selected for --enabledFields)
    • Read Departments (If department are selected for --enabledFields)
    • Read Sites (If site are selected for --enabledFields)
    • Read Computers (If assettag is selected for --enabledFields, or if extensionAttribute is configured)
    • Update Computers (If assettag is selected for --enabledFields, or if extensionAttribute is configured)
    • Read Extension Attributes (If extensionAttribute is configured)
  • Example:
    --clientSecret "myclientSecret" OR --clientSecret "ENC:myencryptedclientsecret"

Optional Parameters

--domain [string]

Defines the domain for options set in local or managed plists.

  • Type: string
  • Default: tech.rocketman.edituserprofile
  • Example:
    --domain "custom.domain.selectTool"

--requiredFields [string]

Specifies a space-separated list of fields that the user must complete before continuing.

  • Type: string (space-separated)

  • Required: No

  • Options: username, fullname, email, room, position, building, department, site, computername, assettag

  • Example:

    --requiredFields username fullname email

--phone [string]

Provides a default phone number to pre-populate the Phone field and to be referenced in your custom text via the %= variables.

  • Type: string
  • Required: No
  • Example:
    --phone "+1-555-123-4567"
  • Usage in templates: you can reference this value in --description (or title, etc.) using the placeholder %=PHONE%.

    --description "Need help? Call us at %=PHONE%."

--email [string]

Provides a default email address to pre-populate the E-Mail field and to be referenced in your custom text via the %= variables.

  • Type: string

  • Required: No

  • Example:

  • Usage in templates: you can reference this value in --description (or title, etc.) using the placeholder %=EMAIL%.

    --description "Questions? Email us at %=EMAIL%."

--logo [path]

Specifies the file path to a logo to display in the dialog.

  • Type: string
  • Default: None
  • Example:
    --logo /path/to/logo.png

--backgroundImage [string]

Specifies the file path to an image to display in the header

  • Type: string
  • Required: No
  • Example:
    --backgroundImage "/path/to/background.png"

--supportTeamName [string]

Specifies the name of the support team for use in the default description template (see defaults for --description).

  • Type: string

  • Required: No (only needed if you rely on the default --description)

  • Example:

    --supportTeamName "IT Support"

--title [string]

Sets the title of the dialog window. If omitted, defaults to:

Happy %=WEEKDAY%!, %=LOCALUSERNAME%! 
Welcome to your new %=MODEL%
  • Type: string

  • Default: the template shown above. (requires --clientId and --clientSecret to populate %=MODEL% if --title is omitted)

  • Example:

    --title "Welcome to your new %=MODEL%!"

--description [string]

Defines the description text displayed in the dialog. If omitted, defaults to:

Please enter the **required** (\*) information for your %=MODEL%, then click
**Continue** to start applying settings to your new Mac.

If you need assistance, please contact the **%=SUPPORTTEAM%**.
  • Type: string

  • Default: the template shown above (requires --supportTeamName to populate %=SUPPORTTEAM% if --description is omitted)

  • Example:

    --description "Please fill out the form below in order for IT to provide you with the applications and configurations you need.\n\nIf you need help, contact your hiring manager."

--width [string]

Specifies the width of the dialog box.

  • Type: string
  • Default: 750
  • Example:
    --width 800

--height [string]

Specifies the height of the dialog box.

  • Type: string
  • Default: 720
  • Example:
    --height 500

--simulate

Enables simulation mode, which prevents sending updates to Jamf Pro.

  • Type: flag
  • Default: False
  • Example:
    --simulate

Required API Permissions

The Jamf Pro API Roles and Clients used with Edit User Profile must have the following permissions to ensure proper functionality:

  • Read Buildings (If building is selected for --enabledFields)
  • Read Departments (If department are selected for --enabledFields)
  • Read Sites (If site are selected for --enabledFields)
  • Read Computers (If assettag is selected for --enabledFields, or if extensionAttribute is configured)
  • Update Computers (If assettag is selected for --enabledFields, or if extensionAttribute is configured)
  • Read Extension Attributes (If extensionAttribute is configured)

Ensure that these permissions are assigned to your API client configuration in Jamf Pro prior to executing the tool.

Advanced Usage Example

To create a fully customized dialog box for building and department selection, including logo and window size adjustments:

sudo rocketman EditUserProfile \
--clientId "..." \
--clientSecret "..." \
--log debug
--requiredFields username fullname email building department \
--enableFields assettag \
--phone "+1-555-123-4567" \
--email "[email protected]" \
--supportTeamName "IT Support" \
--description "Welcome aboard! Please complete the **required** fields below to help us set up your account and hardware.\n\nIf you encounter any issues, reach out to the IT Support team.\n\nPhone: %=PHONE%\n\nEmail: %=EMAIL%" \
--title "🚀 Rocketman Tech Profile Setup"

Important Notes

  • Simulation Mode: Use --simulate for testing the dialog configuration without affecting Jamf Pro data.

JSON Scheme

{
  "title": "Edit User Profile (tech.rocketman.edituserprofile)",
  "description": "The Edit User Profile tool facilitates user input for a range of account and device details based on the information available in Jamf Pro. This tool simplifies the configuration process by presenting users with a dialog box to make their selections.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "clientId": {
      "title": "Client ID",
      "description": "Specifies the Client ID for Jamf API authentication. Required if building, department, site, or assettag is defined for --enableFields. It is recommended to Encrypt these credentials using RCC's Encrypt tool.",
      "property_order": 1,
      "type": "string"
    },
    "clientSecret": {
      "title": "Client Secret",
      "description": "Specifies the Client Secret for Jamf API authentication. Required if building, department, site, or assettag is defined for --enableFields. It is highly recommended to Encrypt these credentials using RCC's Encrypt tool.",
      "property_order": 2,
      "type": "string"
    },
    "enableFields": {
      "title": "Visible Fields",
      "description": "Fields to show in the dialog. Any not listed will be hidden. If building, department, or site is enabled, it will get all the available Buildings, Departments, or Sites (respectively) and display them to the user as a dropdown.",
      "property_order": 3,
      "type": "array",
      "items": {
        "type": "string",
        "title": "Visible Field",
        "enum": [
          "username",
          "fullname",
          "email",
          "room",
          "position",
          "building",
          "department",
          "site",
          "computername",
          "assettag"
        ]
      }
    },
    "requiredFields": {
      "title": "Required Fields",
      "description": "Fields that must be completed by the user before continuing.",
      "property_order": 4,
      "type": "array",
      "items": {
        "type": "string",
        "title": "Required Field",
        "enum": [
          "username",
          "fullname",
          "email",
          "room",
          "position",
          "building",
          "department",
          "site",
          "computername",
          "assettag"
        ]
      }
    },
    "extensionAttribute": {
      "title": "Extension Attributes (Custom Fields)",
      "description": "Defines Extension Attribute input fields to collect and send to Jamf Pro. Each entry must follow: \"name:<DisplayName>,id:<ExtensionAttributeID>[,required:<true|false>]\". Example: \"name:Employee ID,id:42,required:true\".",
      "property_order": 5,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^name:[^,]+,id:[0-9]+(,required:(true|false))?$",
        "title": "Custom Field",
        "default": "name:Display Name,id:00,required:true"
      }
    },
    "title": {
      "title": "Dialog Title",
      "description": "Custom Title to display in the Header. Variables supported: %=WEEKDAY%, %=LOCALUSERNAME%, %=MODEL%.",
      "property_order": 9,
      "type": "string",
      "default": "Happy %=WEEKDAY%, %=LOCALUSERNAME%!"
    },
    "subtitle": {
      "title": "Dialog Subtitle",
      "description": "Optional subtitle displayed under the title banner. Variables supported: %=WEEKDAY%, %=LOCALUSERNAME%, %=MODEL%.",
      "property_order": 10,
      "type": "string",
      "default": "Welcome to your new %=MODEL%."
    },
    "description": {
      "title": "Dialog Description",
      "description": "Markdown-supported body text. Default: \"Please enter the **required** (*) information for your %=MODEL%, then click **Continue** to start applying settings to your new Mac.\\n\\nIf you need assistance, please contact the **%=SUPPORTTEAM%**.\"",
      "property_order": 11,
      "default": "Please enter the **required** (*) information for your %=MODEL%, then click **Continue** to start applying settings to your new Mac.\\n\\nIf you need assistance, please contact the IT Service Desk",
      "type": "string"
    },
    "logo": {
      "title": "Logo Path",
      "description": "Path to a logo file to display in the dialog (e.g., /path/to/logo.png).",
      "property_order": 12,
      "default": "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/com.apple.imac-unibody-27.icns",
      "type": "string"
    },
    "backgroundImage": {
      "title": "Header Background Image",
      "description": "Path to an image shown in the header (e.g., /path/to/background.png).",
      "property_order": 13,
      "type": "string"
    },
    "headerBackgroundColor": {
      "title": "Header Background Color",
      "description": "Hex color for header background (e.g., #f0f0f0).",
      "property_order": 14,
      "default": "#ffffff",
      "type": "string"
    },
    "headerTextColor": {
      "title": "Header Text Color",
      "description": "Hex color for header text (e.g., #333333).",
      "property_order": 15,
      "default": "#000000",
      "type": "string"
    },
    "width": {
      "title": "Window Width",
      "description": "Dialog width in pixels (string). Default 750.",
      "property_order": 16,
      "type": "string",
      "default": "750",
      "pattern": "^[0-9]{2,4}$"
    },
    "height": {
      "title": "Window Height",
      "description": "Dialog height in pixels (string). Default 720.",
      "property_order": 17,
      "type": "string",
      "default": "720",
      "pattern": "^[0-9]{2,4}$"
    }
  },
  "required": [
    "enableFields"
  ]
}

Introduction

Resources

Tools

Misc

Pipeline

Submit an Issue

Clone this wiki locally