A native macOS client for Apple Business Manager API
Features • Requirements • Installation • Setup • Usage • License
ABMate is a native macOS application built with SwiftUI that provides a modern, user-friendly interface for interacting with the Apple Business Manager (ABM) and Apple School Manager (ASM) APIs. It streamlines device management workflows by replacing complex API calls with an intuitive GUI.
- Completely redesigned UI with material-style cards, gradient backgrounds, and smooth staggered animations
- NavigationSplitView layout with a persistent sidebar for quick access to Dashboard, Devices, MDM Servers, Assign, and Activity views
- Live connection badge showing real-time ABM/ASM connection status
- New app icon reflecting the ABMate brand
- At-a-glance overview of total devices, MDM servers, and connection status
- Device breakdown by type (Mac, iPhone, iPad, Apple TV)
- Quick-action buttons for common workflows
- Full support for both Apple Business and Apple School Manager
- Seamlessly switch between platforms with platform-specific API endpoints, OAuth scopes, and branding
- Credentials and platform selection persist across sessions
- Check warranty and coverage status for any enrolled device
- View coverage type, end date, repair coverage, and technical support status
- Bulk assign or unassign devices to MDM servers
- Real-time progress tracking for batch operations
- Activity ID tracking with status polling (status, sub-status, timestamps)
- Dedicated Activity view to monitor batch operation progress
- Check status of any activity by ID
- Export device lists to CSV for reporting and auditing
Apple Business Manager's latest expansion brings powerful new capabilities. ABMate v2.0 is the first native macOS app with full support:
- Users & User Groups — Manage Managed Apple IDs and organizational structures at scale
- Apps & Books — Browse your entire VPP catalog with full metadata (supports Content Token for complete visibility)
- Packages — View and manage custom macOS packages
- Blueprints — Inspect automated enrollment configurations for zero-touch deployment (read-only)
- Configurations — Review device configuration profiles (read-only)
- Audit Events — Complete admin activity tracking with time-range filtering for compliance
- MDM Enrolled Devices — Detailed enrollment analytics and device information
- macOS 15.5 or later
- Xcode 15.0 or later (for building from source)
- Apple Business Manager or Apple School Manager account
- ABM API credentials (Client ID, Key ID, Private Key)
- Jamf Pro API Client credentials (for inventory sync features)
Download the latest release from the Releases page.
-
Clone the repository:
git clone https://github.com/pathaksomesh06/ABMate.git cd ABMate -
Open in Xcode:
open ABMate.xcodeproj
-
Build and run (⌘+R)
- Sign in to Apple Business Manager
- Navigate to Settings → API
- Generate a new API key:
- Note the Client ID (starts with
BUSINESSAPI.) - Note the Key ID
- Download the Private Key (.p8 file)
- Note the Client ID (starts with
- Launch ABMate
- Click Connection in the sidebar (or the Configure button on the dashboard)
- Enter your credentials:
- Client ID: Your ABM client ID
- Key ID: Your API key ID
- Private Key: Import your .p8 file
- Click Generate JWT Token
- Click Connect to ABM
- Open Connection Settings and switch to the MDM Server tab
- Enter your Jamf Pro URL, Client ID, and Client Secret
- Click Connect — ABMate authenticates via OAuth 2.0
- Save the profile for quick reconnection
Your Jamf Pro API Client needs the following privileges: Read Computers, Update Computers, Read Mobile Devices, Update Mobile Devices, Read Users, Update Users.
The dashboard provides an at-a-glance overview centered on inventory comparison. When an MDM server is connected, comparison runs automatically. Key elements include a device breakdown by type (Mac, iPhone, iPad, Apple TV), a clickable MDM server count that navigates to the MDM Servers tab, and Export/Activity buttons in the header for quick access.
View all enrolled devices with search, sort, and filter capabilities. Search across serial numbers, models, product types, and order numbers. Each device shows its enrollment status (Assigned/Unassigned) and inventory sync status (Up to Date, Needs Sync, or Not in MDM) when a comparison has been run. Double-click any device to view full details, look up AppleCare coverage, or check the assigned MDM server. Export filtered results to CSV.
Bulk assign or unassign devices to MDM servers. Filter by OS, enrollment status, MDM availability, and sync status. Action controls (Assign/Unassign toggle and MDM server picker) are separated from filters for clarity. Select devices in the table and execute assignments with progress tracking.
Compare purchasing data between ASM/ABM and Jamf Pro, then push updates in bulk. Two modes are available: single-device lookup for quick checks with editable fields, and bulk comparison with selective sync. Bulk sync supports test modes (10 computers or 10 mobile devices), full sync, cancel mid-operation, and retry of failed devices. Supports both computers (Jamf v1 API) and mobile devices (Jamf Classic API). Generates exportable sync reports with full logs.
A persistent, filterable timeline of all actions taken in ABMate — connections, syncs, assignments, and exports. Filter by category using chips. History persists across app launches with a sanitized audit trail (no device serials, server URLs, counts, or filenames written to disk). Look up ABM activity IDs directly from the Activity view header.
View registered MDM servers from your ASM/ABM account. Select a server to query its assigned devices.
Save multiple ABM/ASM and Jamf Pro connection profiles for quick switching between environments. Sensitive credentials (private keys, client secrets) are stored in the macOS Keychain; only metadata is persisted in UserDefaults.
| Endpoint | Description |
|---|---|
/v1/orgDevices |
List organization devices (paginated) |
/v1/mdmServers |
List MDM servers |
/v1/orgDeviceActivities |
Check activity status |
/v1/mdmServers/{id}/devices |
Assign/unassign devices to MDM |
/v1/devices/{id}/appleCare |
Get AppleCare coverage |
/v1/orgDevices/{id}/relationships/assignedServer |
Get assigned MDM server for a device |
| Endpoint | Description |
|---|---|
/api/oauth/token |
OAuth 2.0 client credentials authentication |
/api/v1/computers-inventory |
Fetch computer inventory with purchasing data |
/api/v1/computers-inventory-detail/{id} |
Update computer purchasing fields |
/api/v2/mobile-devices |
Fetch mobile device list |
/api/v2/mobile-devices/{id}/detail |
Fetch mobile device detail |
/JSSResource/mobiledevices/id/{id}/subset/Purchasing |
Fetch mobile device purchasing (Classic API) |
/JSSResource/mobiledevices/id/{id} |
Update mobile device purchasing (Classic API, XML) |
- ABM/ASM private keys are stored securely in the macOS Keychain
- Jamf Pro client secrets are stored in the macOS Keychain
- JWT tokens are generated locally using your private key
- Activity history is persisted with sanitized details — no device serials, server URLs, counts, or filenames written to disk
- No credentials are transmitted to third parties
- All API communication uses HTTPS
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Somesh Pathak
- GitHub: @pathaksomesh06
- Blog: Intune in Real Life
- Apple Business Manager API Documentation
- SwiftUI and Swift community
Made with ❤️ for the Apple Admin community
