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.4.3.tar.gz (10.3 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.4.3-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jamf_resource_deleter-0.4.3.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jamf_resource_deleter-0.4.3.tar.gz
Algorithm Hash digest
SHA256 8169c13d2a9886606451bf50f299638ca5279b14700724d2b549dd78cfc4e6ab
MD5 b8d9d3b99970dcd6b407e843fade8fae
BLAKE2b-256 7097c033df8e941861d8fcb06e6d83b95b79c64fa71a0936ad55da9b962048b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for jamf_resource_deleter-0.4.3.tar.gz:

Publisher: release-please.yml on macdeacon99/jamfpro-resource-deleter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for jamf_resource_deleter-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e3ed9096f93f4677f9ed4d6b49b38905b99cf7e4006142beca7ab3ab93f18299
MD5 f56af9d3b06af78f2bd61b80cb2a531f
BLAKE2b-256 df1c2db673a97ce20d8503b4b33e61621b144a9a81a5994cd9556447cbb2fbfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for jamf_resource_deleter-0.4.3-py3-none-any.whl:

Publisher: release-please.yml on macdeacon99/jamfpro-resource-deleter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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