Skip to main content

Async Python client for the Apple Business API

Project description

applebusiness

Async Python client for the Apple Business API.

Install

pip install applebusiness

Requires Python 3.14+.

Authentication

You need an API key generated in Apple Business Manager. The client uses the OAuth 2.0 client-credentials flow with a JWT client assertion signed by your private key. See Implementing OAuth for the Apple School Manager and Apple Business API.

You'll need:

  • key_id — the key identifier from Apple Business Manager
  • client_id — your API account's client ID
  • private_key_pem — the PEM-encoded EC private key

Usage

import asyncio
from applebusiness import Client

async def main():
    async with Client(key_id, client_id, private_key_pem) as client:
        devices = await client.get_org_devices()
        for device in devices.data:
            print(device.id, device.attributes.serialNumber)

asyncio.run(main())

Token caching

By default, OAuth tokens are cached in memory on the Client instance. To share tokens across processes (e.g. via Redis), subclass Client and override _get_cached_token / _set_cached_token:

class RedisClient(Client):
    async def _get_cached_token(self):
        raw = await redis.get("ab-token")
        return json.loads(raw) if raw else None

    async def _set_cached_token(self, token):
        await redis.set("ab-token", json.dumps(token), ex=token["expires_in"])

Coverage

The client implements every Apple Business API endpoint documented as of this release:

  • Devicesget_org_devices, get_org_device, get_org_device_apple_care_coverage, get_mdm_devices, get_mdm_device_details
  • Device Management Servicesget_mdm_servers, get_mdm_server_device_ids, get_org_device_assigned_server_id, get_org_device_assigned_server, assign_devices_to_server, unassign_devices_from_server, get_org_device_activity
  • Usersget_users, get_user
  • User Groupsget_user_groups, get_user_group, get_user_group_user_ids
  • Apps & Packagesget_apps, get_app, get_packages, get_package
  • Blueprintsget_blueprints, create_blueprint, get_blueprint, update_blueprint, delete_blueprint, and get_blueprint_<rel>_ids add_<rel>_to_blueprint / remove_<rel>_from_blueprint for apps, configurations, packages, org_devices, users, user_groups
  • Configurationsget_configurations, create_configuration, get_configuration, update_configuration, delete_configuration
  • Auditget_audit_events

All responses are returned as typed Pydantic models (importable from the top-level applebusiness package).

Activity polling

assign_devices_to_server and unassign_devices_from_server poll the resulting orgDeviceActivity until it leaves IN_PROGRESS. The polling timeout defaults to 300 seconds and raises TimeoutError when exceeded. To skip polling, pass wait=False; to wait indefinitely, pass timeout=None.

Errors

Non-2xx responses raise applebusiness.ClientError, which exposes the HTTP status and parsed ErrorResponse body.

License

MIT

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

applebusiness-0.1.1.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.

applebusiness-0.1.1-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file applebusiness-0.1.1.tar.gz.

File metadata

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

File hashes

Hashes for applebusiness-0.1.1.tar.gz
Algorithm Hash digest
SHA256 974f9091f6893e3a807187495f9705a44c9e2a1d918a486797da51fe695266a2
MD5 fb30bf20e42fb1865097f46b75a5e017
BLAKE2b-256 7ce997bb50cd623f4dd4daeb9cfa96380e7d0302a6954195537206883059a66c

See more details on using hashes here.

Provenance

The following attestation bundles were made for applebusiness-0.1.1.tar.gz:

Publisher: publish.yml on merlinz01/applebusiness

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

File details

Details for the file applebusiness-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: applebusiness-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for applebusiness-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6d529428a4b41b1d614f5be57721b051221e24d3e38a39ed202942ae096514ef
MD5 82468fef365bacaacd356550f952f4fb
BLAKE2b-256 ee096412535231e36033189d2173a5eefb70be6df12d604bb5a901a7af9a6f40

See more details on using hashes here.

Provenance

The following attestation bundles were made for applebusiness-0.1.1-py3-none-any.whl:

Publisher: publish.yml on merlinz01/applebusiness

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