NanoAXM is a set of tools and Go libraries powering them for communicating with the Apple School and Business Manager API.
"AxM" is a sort of initialism representing both "Apple Business Manager" and "Apple School Manager" together.
-
Quickstart
A guide to get NanoAXM up and running quickly. -
Operations Guide
A brief overview of the various tools and utilities for working with NanoAXM.
- Release
.zip
files containing the project should be attached to every GitHub release.- Release zips are also published for every
main
branch commit.
- Release zips are also published for every
- A Docker container is built and published to the GHCR.io registry for every release.
docker pull ghcr.io/micromdm/nanoaxm:latest
—docker run ghcr.io/micromdm/nanoaxm:latest
- A Docker container is also published for every
main
branch commit (and tagged with:main
)
- If you have a Go toolchain installed you can checkout the source and simply run
make
.
NanoAXM contains a few tools and utilities. At a high level:
- API configuration & reverse proxy server. The primary Go server component is used for configuring NanoAXM and talking with Apple's AxM servers. It hosts its own API for configuring OAuth 2 crendetials (called "AxM names") and also hosts a transparently authenticating reverse proxy for talking 'directly' to Apple's ABM and ASM (AxM) API endpoints.
- Scripts, tools, and helpers. A set of tools and utilities for talking to the Apple AxM API services — mostly implemented as shell scripts that communicate with the Go server.
See the Operations Guide for more details and usage documentation.
NanoAXM is also a Go library for accessing the Apple AxM APIs. There are two components to the Go library:
- The higher-level goaxm package implements Go methods and structures for talking to the individual AxM API endpoints.
- The lower-level client package implements primitives, helpers, and middleware for authenticating to the AxM APIs and managing OAuth 2 tokens.
See the Go Reference documentation (or the Go source itself, of course) for details on these packages.