Skip to main content

A module that reads JSON files of Jamf resources (IDs) and deletes them

Project description

Jamf Resource Deleter

Safely delete unused or disabled resources from Jamf Pro using structured JSON input and the Jamf Pro API.

This tool is designed to work alongside tools like Prune, allowing you to identify unused Jamf resources, export them as JSON, and then programmatically remove them from your Jamf Pro tenant.


⚠️ Warning

This tool permanently deletes Jamf Pro resources.

  • There is no undo
  • Always validate your JSON input
  • Always test against a non-production Jamf tenant first
  • Review the resources to be deleted before running

You are responsible for the changes made by this tool.


Features

  • Deletes unused or disabled Jamf Pro resources via API
  • Supports multiple JSON input files
  • Clear naming conventions and predictable behavior
  • Uses the JamfPy Python SDK
  • Designed for automation and CI/CD usage
  • Works with output generated by Prune

Supported Resource Types

The exact supported resources depend on JamfPy API coverage, but typically include:

  • Policies
  • Scripts
  • Extension Attributes
  • Computer Groups
  • Mobile Device Groups
  • Configuration Profiles
  • Packages (optional / configurable)

(See JamfPy documentation for supported endpoints.)


How It Works

  1. You identify unused or disabled Jamf resources (e.g. with Prune)
  2. Export those resources into one or more JSON files
  3. Provide the JSON files to jamf-resource-deleter
  4. The module (alongside JamfPy):
    • Authenticates to Jamf Pro
    • Iterates through each resource
    • Deletes it via the Jamf Pro API

Example

import os
from jamf_resource_deleter.jamf_resource_deleter import JamfResourceDeleter
import jamfpy

client_id = "YOUR-CLIENT-ID"
client_secrent = "YOUR-CLIENT-SECRET"
jamfpro_url = "https://your-jamfpro-server.com"

jamfpy_client = jamfpy.Tenant(
    fqdn = jamfpro_url,
    auth_method="oauth2",
    client_id=client_id,
    client_secret=client_secrent,
    token_exp_threshold_mins=1
)

deleter = JamfResourceDeleter(jamfpy_client)

deleter.delete_from_json("PATH-TO-JSON-File")

Installation

Requirements

  • Python 3.9+
  • Jamf Pro account with API permissions
  • Jamf Pro API credentials
  • Network access to your Jamf tenant

Install from PyPi

pip install jamf-resource-deleter

Install from source (development)

git clone https://github.com/your-org/jamf-resource-deleter.git
cd jamf-resource-deleter
pip install -e .

Dependencies

This project uses:

JamfPy is installed automatically as a dependency.


Authentication

Authentication is handled by JamfPy.

You can create a JamfPy client using the following:

import jamfpy

client_id = "YOUR-CLIENT-ID"
client_secrent = "YOUR-CLIENT-SECRET"
jamfpro_url = "https://your-jamfpro-server.com"

jamfpy_client = jamfpy.Tenant(
    fqdn = jamfpro_url,
    auth_method="oauth2"
    client_id=client_id,
    client_secret=client_secrent,
    token_exp_threshold_mins=1
)

Refer to the JamfPy documentation for supported authentication methods.


Input JSON Format

You may supply one or more JSON files.

JSON structure

Each file must contain an array of objects with at minimum:

  • resourceType - Jamf Pro resource type
  • id – Jamf Pro resource ID
  • name – Human-readable name (used for logging / validation)

Example

{
    "unusedComputerProfiles": [{
        "id": 12,
        "name": "Restrictions"
    }]
}

Each resource type has to match the following naming convention, this table is also the supported resources at time of writing:

JSON Key Jamf Resource Type Delete Method
unusedComputerGroups Computer Groups _delete_computer_group
unusedMacApps macOS Applications _delete_apps
unusedMobileDeviceApps Mobile Device Applications _delete_apps
unusedPackages Packages _delete_packages
unusedPolicies Policies _delete_policies
unusedComputerProfiles Computer Configuration Profiles _delete_profiles
unusedScripts Scripts _delete_scripts
unusedComputerEAs Computer Extension Attributes _delete_computer_extension_attributes
unusedRestrictedSoftware Restricted Software _delete_restricted_software

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jamf_resource_deleter-0.3.0.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jamf_resource_deleter-0.3.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file jamf_resource_deleter-0.3.0.tar.gz.

File metadata

  • Download URL: jamf_resource_deleter-0.3.0.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for jamf_resource_deleter-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b62b29d8a666c079bc86e1a11d391f4902387baced0e11ff04f5dc89d18af314
MD5 f7d773d1abec057774d73ee63cade801
BLAKE2b-256 c24314f52d0b31217a851e79bcea31dba03ebd486ae6696dad7fc9104d3afff7

See more details on using hashes here.

File details

Details for the file jamf_resource_deleter-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for jamf_resource_deleter-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 727e04dc9648d40cb029a7a1c07cca82a49d479065ea1580f4b8c59a4023960b
MD5 f90fbf03910c6ffde27afd3b695d6fd0
BLAKE2b-256 06fb7b26220ff6a9dcfc1e6b79f78da3569b4d9f5c0575329599f25ce3f03bc1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page