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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyaxm-2025.11.19.tar.gz
  • Upload date:
  • Size: 21.3 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.19.tar.gz
Algorithm Hash digest
SHA256 040f6f4d974cbca7ebc6dbff086bb1bc9a53e0d0b90c4fe5ca1005fae489632e
MD5 937c882ae541acb0535ba3131db25963
BLAKE2b-256 faae03a215d1a375213bd20ec2926741cabf9488d51ace221296a7e58f05f96a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyaxm-2025.11.19-py3-none-any.whl
  • Upload date:
  • Size: 21.3 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.19-py3-none-any.whl
Algorithm Hash digest
SHA256 938d4a882ed8b7d405b70de9fd0d2ee574380f191d3257988830169e50f28885
MD5 092426806672dea12cfe2371b2dcf17d
BLAKE2b-256 11fce706974025210ce2762d2dec0978c9bab42d4349eb56fa104f3c557e7b0c

See more details on using hashes here.

Provenance

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