Elixir client for the Apple Developer API.
Provides access to:
- Certificates (development, distribution, push notification)
- Provisioning profiles
- Devices (UDID management)
- App Store Connect apps and builds
The public surface is intentionally small:
AppleDeveloper.list_certificates()
AppleDeveloper.create_certificate(:ios_development, csr_content)
AppleDeveloper.revoke_certificate("certificate_id")
AppleDeveloper.list_devices()
AppleDeveloper.register_device("iPhone 14", "A1B2C3D4...", "IOS")
AppleDeveloper.list_profiles()
AppleDeveloper.create_profile("profile_name", "bundle_id", "certificate_id", ["device_id"])
AppleDeveloper.token()Configuration
config :apple_developer,
issuer_id: System.get_env("APPLE_ISSUER_ID"),
key_id: System.get_env("DEVELOPER_KEY_ID"),
private_key: System.get_env("DEVELOPER_PRIVATE_KEY"),
base_url: "https://api.appstoreconnect.apple.com"Every function also accepts per-call opts that override the application config.
Summary
Functions
Create a new certificate.
Create a new provisioning profile.
Delete a bundle ID.
Delete a provisioning profile.
Get a specific app by ID.
Get a specific bundle ID.
Get a specific certificate by ID.
Get a specific device by ID.
Get a specific profile by ID.
Get the current user's info.
List all apps in App Store Connect.
List all bundle IDs.
List all certificates for your team.
List all registered devices.
List all provisioning profiles.
List all users in your team.
Register a new bundle ID.
Register a new device for development.
Revoke a certificate.
Return a cached-per-call App Store Connect access token (after the JWT generation).
Update a device name.
Types
Functions
Create a new certificate.
Parameters
certificate_type: One of::ios_development:ios_distribution:mac_app_distribution:mac_installer_distribution:mac_app_development:developer_id_kext:developer_id_application
csr_content: The Certificate Signing Request content (PEM format)opts: Optional overrides
Examples
AppleDeveloper.create_certificate(:ios_development, csr_content)
@spec create_profile( String.t(), String.t(), String.t(), [String.t()], [String.t()], opts() ) :: response()
Create a new provisioning profile.
Parameters
name: Profile nameprofile_type: Profile type (e.g., "IOS_APP_DEVELOPMENT", "IOS_APP_STORE")bundle_id: The bundle ID to associatecertificate_ids: List of certificate IDsdevice_ids: List of device IDs (for development profiles)opts: Optional overrides
Examples
AppleDeveloper.create_profile(
"My Development Profile",
"IOS_APP_DEVELOPMENT",
"bundle_id_123",
["cert_id_456"],
["device_id_789"]
)
Delete a bundle ID.
Parameters
bundle_id: The bundle ID resource ID to deleteopts: Optional overrides
Delete a provisioning profile.
Parameters
profile_id: The profile ID to deleteopts: Optional overrides
Get a specific app by ID.
Parameters
app_id: The app IDopts: Optional overrides
Get a specific bundle ID.
Parameters
bundle_id: The bundle ID resource IDopts: Optional overrides
Get a specific certificate by ID.
Parameters
certificate_id: The certificate IDopts: Optional overrides
Get a specific device by ID.
Parameters
device_id: The device IDopts: Optional overrides
Get a specific profile by ID.
Parameters
profile_id: The profile IDopts: Optional overrides
Get the current user's info.
Parameters
opts: Optional overrides
List all apps in App Store Connect.
Parameters
opts::filter_name- Filter by app name:limit- Maximum results
List all bundle IDs.
Parameters
opts::filter_identifier- Filter by bundle identifier:limit- Maximum results
List all certificates for your team.
Parameters
opts::filter_serial- Filter by serial number:filter_status- Filter by status ("ACTIVE", "EXPIRED", "REVOKED"):limit- Maximum results (default 200)
List all registered devices.
Parameters
opts::filter_status- Filter by status ("ENABLED", "DISABLED"):filter_platform- Filter by platform ("IOS", "MAC_OS"):filter_udi- Filter by UDID:limit- Maximum results
List all provisioning profiles.
Parameters
opts::filter_profile_state- Filter by state ("ACTIVE", "EXPIRED", "INVALID"):filter_profile_type- Filter by type:limit- Maximum results
List all users in your team.
Parameters
opts::filter_roles- Filter by roles:limit- Maximum results
Register a new bundle ID.
Parameters
identifier: The bundle identifier (e.g., "com.example.app")name: Display name for the bundle IDplatform: Platform ("IOS", "MAC_OS", "UNIVERSAL")opts: Optional overrides
Register a new device for development.
Parameters
name: Device name/labeludid: Device UDID (unique device identifier)platform: Platform ("IOS" or "MAC_OS")opts: Optional overrides
Examples
AppleDeveloper.register_device("iPhone 14 Pro", "00008110-001234567890ABCDE", "IOS")
Revoke a certificate.
Parameters
certificate_id: The certificate ID to revokeopts: Optional overrides
Return a cached-per-call App Store Connect access token (after the JWT generation).
Update a device name.
Parameters
device_id: The device IDnew_name: New device nameopts: Optional overrides