Download the PHP package dimer47/simplemdm-php-sdk without Composer

On this page you can find all versions of the php package dimer47/simplemdm-php-sdk. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package simplemdm-php-sdk

๐Ÿ“ฑ SimpleMDM PHP SDK

PHP Guzzle Laravel License Tests Beta

โš ๏ธ This SDK is in beta. It has not been extensively tested in production environments. Unit and integration tests are included in the source code and can be run with your own API key and SimpleMDM environment. Use in production at your own risk.

A PHP SDK for the SimpleMDM API to programmatically manage Apple devices. Compatible with Laravel and any PHP 8.1+ project. ๐ŸŽ

๐ŸŽ‰ Features

๐Ÿ“ Installation

๐Ÿš€ Quick Start

๐Ÿ”ง Laravel Integration

โš™๏ธ Configuration

The package auto-discovers the service provider and facade. Publish the config file:

Add your API key to .env:

๐Ÿท๏ธ Usage with Facade

๐Ÿ’‰ Usage with Dependency Injection

๐Ÿ“š Available Resources

๐Ÿข Account

๐Ÿ“ฑ Devices

๐Ÿ“ฆ Apps

๐Ÿ“‹ Assignment Groups

๐Ÿท๏ธ Custom Attributes

๐Ÿ“„ Custom Configuration Profiles

๐Ÿ“œ Custom Declarations (DDM)

๐Ÿ”— DEP Servers

๐Ÿ“ง Enrollments

๐Ÿ“ฒ Installed Apps

๐Ÿ“ Logs

๐Ÿ“ Lost Mode

โš™๏ธ Managed App Configs

๐Ÿ›ก๏ธ Profiles

๐Ÿ” Push Certificate

๐Ÿ“œ Scripts

โ–ถ๏ธ Script Jobs

โŒ Error Handling

๐Ÿงช Testing

Integration tests use a VCR cassette system that records real API responses and replays them. To record new cassettes, set SIMPLEMDM_API_KEY in .env and delete the corresponding cassette in tests/Fixtures/cassettes/.

๐Ÿ“Š API Coverage

๐Ÿงช 200 tests | โœ… 404 assertions | โญ๏ธ 17 skipped

Tests were run against the real SimpleMDM API with a supervised iPad (iOS 12.5).

Resource Method Endpoint Unit Integration
๐Ÿข Account get() GET /account โœ… โœ…
update() PATCH /account โœ… โœ…
๐Ÿ“ฆ Apps list() GET /apps โœ… โœ…
get() GET /apps/{id} โœ… โœ…
create() POST /apps (binary) โœ… ๐Ÿ”ถ
createFromAppStore() POST /apps (App Store) โœ… โœ…
createFromBundleId() POST /apps (Bundle ID) โœ… ๐Ÿ”ถ
update() PATCH /apps/{id} โœ… ๐Ÿ”ถ
delete() DELETE /apps/{id} โœ… โœ…
listInstalls() GET /apps/{id}/installs โœ… โœ…
uploadMunkiPkgInfo() POST .../munki_pkginfo โœ… ๐Ÿ”ถ
deleteMunkiPkgInfo() DELETE .../munki_pkginfo โœ… ๐Ÿ”ถ
๐Ÿ“‹ Assignment Groups list() GET /assignment_groups โœ… โœ…
get() GET /assignment_groups/{id} โœ… โœ…
create() POST /assignment_groups โœ… โœ…
update() PATCH /assignment_groups/{id} โœ… โœ…
delete() DELETE /assignment_groups/{id} โœ… โœ…
assignApp() POST .../apps/{appId} โœ… โœ…
unassignApp() DELETE .../apps/{appId} โœ… โœ…
assignDevice() POST .../devices/{deviceId} โœ… โœ…
unassignDevice() DELETE .../devices/{deviceId} โœ… โœ…
assignDeviceGroup() POST .../device_groups/{id} โœ… โญ๏ธ
unassignDeviceGroup() DELETE .../device_groups/{id} โœ… โญ๏ธ
pushApps() POST .../push_apps โœ… โœ…
updateApps() POST .../update_apps โœ… โœ…
syncProfiles() POST .../sync_profiles โœ… โญ๏ธ
clone() POST .../clone โœ… โœ…
assignProfile() POST .../profiles/{id} โœ… โญ๏ธ
unassignProfile() DELETE .../profiles/{id} โœ… โญ๏ธ
getCustomAttributes() GET .../custom_attribute_values โœ… โœ…
setCustomAttribute() PUT .../custom_attribute_values/{n} โœ… โœ…
๐Ÿท๏ธ Custom Attributes list() GET /custom_attributes โœ… โœ…
get() GET /custom_attributes/{id} โœ… โœ…
create() POST /custom_attributes โœ… โœ…
update() PATCH /custom_attributes/{id} โœ… โœ…
delete() DELETE /custom_attributes/{id} โœ… โœ…
๐Ÿ“„ Custom Config Profiles list() GET /custom_configuration_profiles โœ… โœ…
create() POST /custom_configuration_profiles โœ… โœ…
update() PATCH .../{id} โœ… โœ…
delete() DELETE .../{id} โœ… โœ…
download() GET .../download โœ… โœ…
pushToDevice() POST .../devices/{deviceId} โœ… โœ…
removeFromDevice() DELETE .../devices/{deviceId} โœ… โœ…
assignToDeviceGroup() POST .../device_groups/{id} โœ… ๐Ÿ”ถ
unassignFromDeviceGroup() DELETE .../device_groups/{id} โœ… ๐Ÿ”ถ
๐Ÿ“œ Custom Declarations list() GET /custom_declarations โœ… โœ…
create() POST /custom_declarations โœ… โœ…
update() PATCH /custom_declarations/{id} โœ… โœ…
delete() DELETE /custom_declarations/{id} โœ… โœ…
download() GET .../download โœ… โœ…
pushToDevice() POST .../devices/{deviceId} โœ… โญ๏ธ iOS 15+
removeFromDevice() DELETE .../devices/{deviceId} โœ… โญ๏ธ iOS 15+
๐Ÿ”— DEP Servers list() GET /dep_servers โœ… โœ…
get() GET /dep_servers/{id} โœ… โญ๏ธ
listDevices() GET .../dep_devices โœ… โญ๏ธ
getDevice() GET .../dep_devices/{id} โœ… โญ๏ธ
sync() POST .../sync โœ… โญ๏ธ
๐Ÿ“ฑ Device Groups list() GET /device_groups โœ… โœ…
get() GET /device_groups/{id} โœ… โญ๏ธ
assignDevice() POST .../devices/{deviceId} โœ… โญ๏ธ
clone() POST .../clone โœ… โญ๏ธ
getCustomAttributes() GET .../custom_attribute_values โœ… ๐Ÿ”ถ
setCustomAttribute() PUT .../custom_attribute_values/{n} โœ… ๐Ÿ”ถ
๐Ÿ“ฑ Devices list() GET /devices โœ… โœ…
get() GET /devices/{id} โœ… โœ…
create() POST /devices โœ… โœ…
update() PATCH /devices/{id} โœ… โœ…
delete() DELETE /devices/{id} โœ… โœ…
listInstalledApps() GET .../installed_apps โœ… โœ…
listProfiles() GET .../profiles โœ… โœ…
listUsers() GET .../users โœ… โœ…
listCustomAttributes() GET .../custom_attribute_values โœ… โœ…
setCustomAttribute() PUT .../custom_attribute_values/{n} โœ… โœ…
setCustomAttributes() PUT .../custom_attribute_values โœ… โœ…
refresh() POST .../refresh โœ… โœ…
lock() POST .../lock โœ… โœ…
clearPasscode() POST .../clear_passcode โœ… โœ…
clearRestrictionsPassword() POST .../clear_restrictions_password โœ… โœ…
updateOS() POST .../update_os โœ… โœ…
restart() POST .../restart โœ… โœ…
shutdown() POST .../shutdown โœ… โœ…
pushApps() POST .../push_apps โœ… โœ…
setTimeZone() POST .../set_time_zone โœ… โœ…
enableBluetooth() POST .../bluetooth โœ… โœ…
disableBluetooth() DELETE .../bluetooth โœ… โœ…
wipe() POST .../wipe โœ… โ›”
unenroll() POST .../unenroll โœ… โ›”
deleteUser() DELETE .../users/{userId} โœ… ๐Ÿ”ถ
enableRemoteDesktop() POST .../remote_desktop โœ… ๐Ÿ–ฅ๏ธ
disableRemoteDesktop() DELETE .../remote_desktop โœ… ๐Ÿ–ฅ๏ธ
rotateFirmwarePassword() POST .../rotate_firmware_password โœ… ๐Ÿ–ฅ๏ธ
clearFirmwarePassword() POST .../clear_firmware_password โœ… ๐Ÿ–ฅ๏ธ
clearRecoveryLockPassword() POST .../clear_recovery_lock_password โœ… ๐Ÿ–ฅ๏ธ
rotateRecoveryLockPassword() POST .../rotate_recovery_lock_password โœ… ๐Ÿ–ฅ๏ธ
rotateFileVaultKey() POST .../rotate_filevault_key โœ… ๐Ÿ–ฅ๏ธ
setAdminPassword() POST .../set_admin_password โœ… ๐Ÿ–ฅ๏ธ
rotateAdminPassword() POST .../rotate_admin_password โœ… ๐Ÿ–ฅ๏ธ
๐Ÿ“ง Enrollments list() GET /enrollments โœ… โœ…
get() GET /enrollments/{id} โœ… โœ…
delete() DELETE /enrollments/{id} โœ… โœ…
sendInvitation() POST .../invitations โœ… โœ…
๐Ÿ“ฒ Installed Apps get() GET /installed_apps/{id} โœ… โญ๏ธ
update() POST .../update โœ… ๐Ÿ”ถ
delete() DELETE /installed_apps/{id} โœ… ๐Ÿ”ถ
๐Ÿ“ Logs list() GET /logs โœ… โœ…
get() GET /logs/{id} โœ… โœ…
๐Ÿ“ Lost Mode enable() POST .../lost_mode โœ… โœ…
disable() DELETE .../lost_mode โœ… โœ…
playSound() POST .../play_sound โœ… โœ…
updateLocation() POST .../update_location โœ… โœ…
โš™๏ธ Managed App Configs list() GET /apps/{id}/managed_configs โœ… โœ…
create() POST .../managed_configs โœ… โœ…
push() POST .../managed_configs/push โœ… โœ…
delete() DELETE .../managed_configs/{id} โœ… โœ…
๐Ÿ›ก๏ธ Profiles list() GET /profiles โœ… โœ…
get() GET /profiles/{id} โœ… โญ๏ธ
assignToDevice() POST .../devices/{deviceId} โœ… โญ๏ธ
unassignFromDevice() DELETE .../devices/{deviceId} โœ… โญ๏ธ
assignToDeviceGroup() POST .../device_groups/{id} โœ… โญ๏ธ
unassignFromDeviceGroup() DELETE .../device_groups/{id} โœ… โญ๏ธ
๐Ÿ” Push Certificate get() GET /push_certificate โœ… โœ…
update() PUT /push_certificate โœ… โ›”
getSignedCsr() GET .../scsr โœ… โœ…
๐Ÿ“œ Scripts list() GET /scripts โœ… โœ…
get() GET /scripts/{id} โœ… โœ…
create() POST /scripts โœ… โœ…
update() PATCH /scripts/{id} โœ… โœ…
delete() DELETE /scripts/{id} โœ… โœ…
โ–ถ๏ธ Script Jobs list() GET /script_jobs โœ… โœ…
get() GET /script_jobs/{id} โœ… โญ๏ธ
create() POST /script_jobs โœ… โญ๏ธ ๐Ÿ–ฅ๏ธ
cancel() DELETE /script_jobs/{id} โœ… โญ๏ธ ๐Ÿ–ฅ๏ธ

๐Ÿ”‘ Legend

Icon Meaning
โœ… Tested and validated against the real SimpleMDM API
โญ๏ธ Skipped โ€” resource not available in the test environment or missing prerequisites
๐Ÿ”ถ Not integration tested โ€” covered by unit tests only (HTTP mocks)
๐Ÿ–ฅ๏ธ macOS only โ€” requires an enrolled macOS device, unit tested only
โ›” Intentionally not tested โ€” destructive/irreversible action (wipe, unenroll, push certificate)

โš ๏ธ Limitations and Warnings

๐Ÿ”ด This SDK is in beta. Integration tests were run against a limited SimpleMDM environment (a single supervised iPad running iOS 12.5, no macOS device). While 100% of endpoints are covered by unit tests and the majority are validated through integration tests, some production scenarios could not be verified.

Endpoints not integration tested:

๐Ÿ’ก Running tests with your own environment:

๐Ÿ’ก Tip: VCR cassettes record real API responses. Once recorded, tests can be re-run without an API connection. Delete a cassette to force re-recording for that endpoint.

๐Ÿ“– OpenAPI Specification

An OpenAPI 3.0 specification file is available at openapi.yaml. It covers all SimpleMDM API v1 endpoints documented in this SDK (~130 endpoints). This file can be used with AI CLI tools, Swagger UI, or any OpenAPI-compatible tool to explore and interact with the API.

Note: This specification has been generated from the SDK source code and has not been extensively tested against the live API. Use it as a reference, not as a guaranteed contract.

๐Ÿ“‹ Requirements

๐Ÿ“„ License

MIT


All versions of simplemdm-php-sdk with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
guzzlehttp/guzzle Version ^7.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package dimer47/simplemdm-php-sdk contains the following files

Loading the files please wait ...