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

If you want to setup the authentication using envvars, do the following:

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.

Otherwise you will have to pass the client id, key id and private key as arguments to the client like so:

from pyaxm.client import Client

axm_client = Client(
    axm_client_id="CLIENT_ID",
    axm_key_id="KEY_ID",
    key_path="PRIVATE_KEY",
    token_path="TOKEN_PATH"
)

The token path is the location where the access token will be stored.

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.

apple-care-coverage -> Get AppleCare warranty coverage information for a device. The data returned is on CSV format so you can store it as a CSV if needed

Client:

Example usage:

from pyaxm.client import Client

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"
)

apple_care_coverage = axm_client.get_apple_care_coverage(device_id='SERIAL_NUMBER')
print(apple_care_coverage)

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pyaxm-2025.11.11.tar.gz
Algorithm Hash digest
SHA256 ce4efccf2d773553914db9dc30c3abef25d545903ace3280cc17051fcf063023
MD5 3af635070b49259ab31cf86969b6fc86
BLAKE2b-256 aa30af3614046b0875c9abd544a53f8d020ae4ec2e0cdc3e6d53ee215401be56

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyaxm-2025.11.11.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.11.11-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pyaxm-2025.11.11-py3-none-any.whl
Algorithm Hash digest
SHA256 a6316f47d6edcbc2bbce3c54bc9c1765ca0bd0906c1329ef5d4c1ed34d64b51a
MD5 801d6cdc6df02b85ad15c286e2f7c542
BLAKE2b-256 7c4a44483e07854e7511ea8270b0a82708aa5f0d87b33b836c19816d226da316

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyaxm-2025.11.11-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