Skip to main content

Query Apple Business Manager using Python

Project description

The purpose of this repo is to create a python library to easily get information using the Apple Business Manager API using Python.

A CLI command is also included, pyacm-cli.

https://developer.apple.com/documentation/applebusinessmanagerapi

Setup:

You will need to setup 2 environmental variables that are provided when creating the private key in ABM:

AXM_CLIENT_ID and AXM_KEY_ID

Place the private key in your home directory inside the .config/pyaxm folder and rename it key.pem

This location will be used to store a cached access_token that can be reused until it expires. While testing I have experienced that requesting too many access tokens will result in a response with status code 400 when trying to get a new token.

Installation:

pip install pyaxm

CLI:

Usage: pyaxm-cli COMMAND [ARGS]

Commands

devices -> List all devices in the organization.

device -> Get a device by ID.

mdm-servers -> List all MDM servers.

mdm-server -> List devices in a specific MDM server.

mdm-server-assigned -> Get the server assignment for a device.

assign-device -> Assign a device to an MDM server.

unassign-device -> Unassign a device from an MDM server.

The data returned is on CSV format so you can store it as a CSV if needed

Client:

Example usage:

axm_client = Client()

devices = axm_client.list_devices()
print(devices)

device = axm_client.get_device(device_id='SERIAL_NUMBER')
print(device)

mdm_servers = axm_client.list_mdm_servers()
print(mdm_servers)

# The MDM server ID can be extracted from listing all mdm servers
mdm_server = axm_client.list_devices_in_mdm_server(server_id="MDM_SERVER_ID")
print(mdm_server)

device_assigned_server = axm_client.list_devices_in_mdm_server(device_id='SERIAL_NUMBER')
print(device_assigned_server)

assignment_result = axm_client.assign_unassign_device_to_mdm_server(
    device_id='SERIAL_NUMBER',
    server_id="MDM_SERVER_ID",
    action="ASSIGN_DEVICES"|"UNASSIGN_DEVICES"
)

Issues:

  • need to add tests
  • unassign, assign devices need to be able to pass more than 1 device

This is still a work in progress

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

pyaxm-2025.6.22.tar.gz (20.5 kB view details)

Uploaded Source

Built Distribution

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

pyaxm-2025.6.22-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file pyaxm-2025.6.22.tar.gz.

File metadata

  • Download URL: pyaxm-2025.6.22.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyaxm-2025.6.22.tar.gz
Algorithm Hash digest
SHA256 6cc1457cb10ca28f2f083a29dda989a3dd78d1a5a166690556840a1fac9bcbde
MD5 13f49e38f1942340c1a3807deef49d1e
BLAKE2b-256 b673c19d68eb7f5c42785271afd2f41af5ff6386876efc147080098a8fa2e7ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyaxm-2025.6.22.tar.gz:

Publisher: release.yml on kaincenteno/pyaxm

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

File details

Details for the file pyaxm-2025.6.22-py3-none-any.whl.

File metadata

  • Download URL: pyaxm-2025.6.22-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyaxm-2025.6.22-py3-none-any.whl
Algorithm Hash digest
SHA256 b3bcc44f79661bbfb7162439db8e9922ff094627917de6ce10425234a1b27179
MD5 e8fb09ca7b29bfa33f34dcbd24212ad6
BLAKE2b-256 efa31db5fcf6d809cfe82108bcf113c296a36d07ab0ff3bd389ea66856d93ba2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyaxm-2025.6.22-py3-none-any.whl:

Publisher: release.yml on kaincenteno/pyaxm

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