Skip to content

dl-alexandre/apple_developer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AppleDeveloper

Elixir client for the App Store Connect API.

It covers the provisioning and App Store Connect surfaces that are most useful in automation scripts and internal tools:

  • certificates
  • devices
  • provisioning profiles
  • bundle IDs
  • apps

Installation

Add to your mix.exs:

defp deps do
  [
    {:apple_developer, "~> 0.1.0"}
  ]
end

Configuration

config :apple_developer,
  issuer_id: System.get_env("APPLE_DEVELOPER_ISSUER_ID"),
  key_id: System.get_env("APPLE_DEVELOPER_KEY_ID"),
  private_key_path: System.get_env("APPLE_DEVELOPER_PRIVATE_KEY_PATH")

Supported options:

  • issuer_id - App Store Connect issuer ID
  • key_id - App Store Connect API key ID
  • private_key - inline .p8 contents
  • private_key_path - path to the .p8 file
  • base_url - defaults to https://api.appstoreconnect.apple.com
  • token_ttl_seconds - defaults to 1200
  • req_options - forwarded to Req

Every public function accepts per-call overrides.

Quick Start

# Access token
{:ok, token} = AppleDeveloper.token()

# Apps
{:ok, apps} = AppleDeveloper.list_apps(limit: 5)

# Certificates
{:ok, certs} = AppleDeveloper.list_certificates(filter_status: "ACTIVE")

# Devices
{:ok, devices} = AppleDeveloper.list_devices(filter_platform: "IOS")

# Profiles
{:ok, profiles} = AppleDeveloper.list_profiles(filter_profile_state: "ACTIVE")

Common Operations

# Register a device
AppleDeveloper.register_device(
  "QA iPhone",
  "00008110-001234567890ABCDE",
  "IOS"
)

# Create a development certificate
AppleDeveloper.create_certificate(:ios_development, csr_pem)

# Create a provisioning profile
AppleDeveloper.create_profile(
  "My Development Profile",
  "IOS_APP_DEVELOPMENT",
  bundle_id_id,
  [certificate_id],
  [device_id]
)

Live Testing

A live smoke test is included:

cd apple_developer
elixir test_live.exs

That script verifies token generation and makes a real list_apps call.

Errors

API calls return {:ok, result} or {:error, reason}.

HTTP failures are wrapped in AppleDeveloper.Error.

Typical statuses:

  • 401 - invalid key, issuer, or expired token
  • 403 - permissions issue
  • 404 - resource not found
  • 422 - validation failure
  • 429 - rate limited

Notes

  • The client uses the JWT directly as the bearer token.
  • Tokens are cached in AppleDeveloper.TokenCache with a 60-second refresh buffer.
  • The package is suitable for CI tooling and one-off release automation scripts.

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages