> ## Documentation Index
> Fetch the complete documentation index at: https://docs.asccli.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Bundle ids

# Bundle IDs

> Manage bundle IDs and app capabilities

Create, update, and manage bundle identifiers and their associated capabilities.

## Overview

Bundle IDs uniquely identify your apps on Apple platforms. The `bundle-ids` command manages bundle identifiers and their capabilities in App Store Connect.

## List Bundle IDs

List all bundle IDs in your account:

```bash theme={null} theme={null}
# List all bundle IDs
asc bundle-ids list

# Limit results per page
asc bundle-ids list --limit 50

# Fetch all pages automatically
asc bundle-ids list --paginate

# Output as table
asc bundle-ids list --output table
```

### Pagination Options

* `--limit` - Results per page (1-200)
* `--next` - Fetch next page using a `links.next` URL
* `--paginate` - Automatically fetch all pages

## Get Bundle ID Details

Retrieve a specific bundle ID by resource ID:

```bash theme={null} theme={null}
asc bundle-ids view --id "BUNDLE_ID"
```

**Note:** The `--id` parameter expects the App Store Connect resource ID, not the bundle identifier string (e.g., "com.example.app"). Use `list` to find the resource ID.

## Create Bundle ID

Register a new bundle identifier:

```bash theme={null} theme={null}
asc bundle-ids create --identifier "com.example.app" \
  --name "Example App" \
  --platform IOS
```

### Required Parameters

* `--identifier` - Bundle ID string (e.g., com.example.app)
* `--name` - Display name for the bundle ID

### Optional Parameters

* `--platform` - Platform: IOS (default), MAC\_OS, UNIVERSAL

### Bundle ID Format

Bundle IDs must follow these rules:

* Use reverse DNS notation: `com.company.app`
* Contain only alphanumeric characters (A-Z, a-z, 0-9), hyphens (-), and periods (.)
* Cannot start or end with a period
* Cannot contain consecutive periods

**Valid examples:**

* `com.example.myapp`
* `com.example.my-app`
* `com.example.myapp.watchkit`

**Invalid examples:**

* `.com.example.app` (starts with period)
* `com..example.app` (consecutive periods)
* `com.example.app!` (special characters)

### Wildcard Bundle IDs

Create wildcard bundle IDs for app groups:

```bash theme={null} theme={null}
asc bundle-ids create --identifier "com.example.*" \
  --name "Example App Family" \
  --platform IOS
```

**Wildcard limitations:**

* Can only use `*` as the last component
* Cannot use certain capabilities (Push Notifications, In-App Purchase, etc.)
* Useful for app extensions and development

## Update Bundle ID

Update a bundle ID's display name:

```bash theme={null} theme={null}
asc bundle-ids update --id "BUNDLE_ID" --name "New Name"
```

**Note:** You cannot change the bundle identifier string itself. Only the display name can be updated.

## Delete Bundle ID

Delete a bundle identifier:

```bash theme={null} theme={null}
asc bundle-ids delete --id "BUNDLE_ID" --confirm
```

**Warning:** Deleting a bundle ID:

* Cannot be undone
* Invalidates all associated provisioning profiles
* Removes all capability configurations
* Should only be done if the bundle ID is no longer in use

## Bundle ID Relationships

### Get Associated App

Find the app using this bundle ID:

```bash theme={null} theme={null}
asc bundle-ids app view --id "BUNDLE_ID"
```

### List Associated Profiles

List all provisioning profiles for a bundle ID:

```bash theme={null} theme={null}
asc bundle-ids profiles list --id "BUNDLE_ID"
```

## Capabilities Management

Manage app capabilities for a bundle ID.

### List Capabilities

List all capabilities for a bundle ID:

```bash theme={null} theme={null}
asc bundle-ids capabilities list --bundle "BUNDLE_ID"

# Fetch all pages
asc bundle-ids capabilities list --bundle "BUNDLE_ID" --paginate
```

### Add Capability

Enable a capability for a bundle ID:

```bash theme={null} theme={null}
# Simple capability (no settings)
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability PUSH_NOTIFICATIONS

# Capability with settings (iCloud)
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability ICLOUD \
  --settings '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_13","enabled":true}]}]'
```

### Common Capability Types

**No settings required:**

* `PUSH_NOTIFICATIONS` - Push notifications
* `IN_APP_PURCHASE` - In-App Purchase
* `GAME_CENTER` - Game Center
* `WALLET` - Wallet (Apple Pay)
* `SIRIKIT` - SiriKit
* `PERSONAL_VPN` - Personal VPN
* `NETWORK_EXTENSIONS` - Network Extensions
* `HOTSPOT` - Hotspot Configuration
* `MULTIPATH` - Multipath networking
* `NFC_TAG_READING` - NFC tag reading

**Settings required:**

* `ICLOUD` - iCloud (CloudKit/Documents)
* `APP_GROUPS` - App Groups
* `ASSOCIATED_DOMAINS` - Associated Domains
* `DATA_PROTECTION` - Data Protection
* `HEALTHKIT` - HealthKit
* `HOMEKIT` - HomeKit
* `WIRELESS_ACCESSORY_CONFIGURATION` - Wireless Accessory

### iCloud Capability

```bash theme={null} theme={null}
# Enable iCloud with CloudKit
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability ICLOUD \
  --settings '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_13","enabled":true}]}]'

# Enable legacy iCloud (documents)
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability ICLOUD \
  --settings '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_9","enabled":true}]}]'
```

### App Groups Capability

```bash theme={null} theme={null}
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability APP_GROUPS \
  --settings '[{"key":"APP_GROUP_IDS","options":[{"key":"group.com.example.shared","enabled":true}]}]'
```

### Update Capability

Modify capability settings:

```bash theme={null} theme={null}
asc bundle-ids capabilities update --id "CAPABILITY_ID" \
  --settings '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_13","enabled":true}]}]'

# Change capability type
asc bundle-ids capabilities update --id "CAPABILITY_ID" \
  --capability PUSH_NOTIFICATIONS
```

### Remove Capability

Disable a capability:

```bash theme={null} theme={null}
asc bundle-ids capabilities remove --id "CAPABILITY_ID" --confirm
```

**Note:** Removing capabilities may cause provisioning profiles to become invalid. Regenerate profiles after capability changes.

## Complete Example Workflows

### Create App with Capabilities

```bash theme={null} theme={null}
# 1. Create bundle ID
asc bundle-ids create --identifier "com.example.myapp" \
  --name "My App" \
  --platform IOS

# Note BUNDLE_ID from response

# 2. Add Push Notifications
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability PUSH_NOTIFICATIONS

# 3. Add In-App Purchase
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability IN_APP_PURCHASE

# 4. Add iCloud
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability ICLOUD \
  --settings '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_13","enabled":true}]}]'

# 5. Verify capabilities
asc bundle-ids capabilities list --bundle "BUNDLE_ID" --output table
```

### App Extensions

Create bundle IDs for app extensions:

```bash theme={null} theme={null}
# Main app
asc bundle-ids create --identifier "com.example.app" \
  --name "Example App" \
  --platform IOS

# Widget extension
asc bundle-ids create --identifier "com.example.app.widget" \
  --name "Example Widget" \
  --platform IOS

# Share extension
asc bundle-ids create --identifier "com.example.app.share" \
  --name "Example Share Extension" \
  --platform IOS

# Watch app
asc bundle-ids create --identifier "com.example.app.watchkitapp" \
  --name "Example Watch App" \
  --platform IOS
```

### App Groups Setup

Enable app group sharing between main app and extensions:

```bash theme={null} theme={null}
# 1. Get bundle IDs
asc bundle-ids list --output json | grep "com.example.app"
# Note resource IDs for main app and extensions

# 2. Add App Groups to main app
asc bundle-ids capabilities add --bundle "MAIN_BUNDLE_ID" \
  --capability APP_GROUPS \
  --settings '[{"key":"APP_GROUP_IDS","options":[{"key":"group.com.example.shared","enabled":true}]}]'

# 3. Add App Groups to widget
asc bundle-ids capabilities add --bundle "WIDGET_BUNDLE_ID" \
  --capability APP_GROUPS \
  --settings '[{"key":"APP_GROUP_IDS","options":[{"key":"group.com.example.shared","enabled":true}]}]'

# 4. Add App Groups to share extension
asc bundle-ids capabilities add --bundle "SHARE_BUNDLE_ID" \
  --capability APP_GROUPS \
  --settings '[{"key":"APP_GROUP_IDS","options":[{"key":"group.com.example.shared","enabled":true}]}]'
```

### Associated Domains (Universal Links)

```bash theme={null} theme={null}
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability ASSOCIATED_DOMAINS \
  --settings '[{"key":"ASSOCIATED_DOMAIN_IDS","options":[{"key":"applinks:example.com","enabled":true},{"key":"applinks:www.example.com","enabled":true}]}]'
```

### HealthKit and HomeKit

```bash theme={null} theme={null}
# HealthKit
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability HEALTHKIT

# HomeKit
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability HOMEKIT
```

## Platform-Specific Considerations

### iOS / tvOS

Most capabilities available. Use `--platform IOS` (default).

### macOS

Some capabilities differ for macOS:

```bash theme={null} theme={null}
asc bundle-ids create --identifier "com.example.macapp" \
  --name "Example Mac App" \
  --platform MAC_OS
```

**macOS-specific capabilities:**

* `SANDBOX` - App Sandbox
* `SYSTEM_EXTENSION_INSTALL` - System Extensions
* `USER_MANAGEMENT` - User Management

### Universal (Mac Catalyst)

For Mac Catalyst apps that run on both iOS and macOS:

```bash theme={null} theme={null}
asc bundle-ids create --identifier "com.example.universal" \
  --name "Example Universal App" \
  --platform UNIVERSAL
```

## Troubleshooting

### Bundle ID Already Exists

```
Error: A bundle ID with identifier 'com.example.app' already exists
```

**Solution:**

```bash theme={null} theme={null}
# List to find existing bundle ID
asc bundle-ids list --output json | grep "com.example.app"

# Use the existing bundle ID or choose a different identifier
```

### Invalid Bundle Identifier Format

```
Error: Bundle identifier is invalid
```

Ensure identifier:

* Uses reverse DNS notation
* Contains only alphanumeric, hyphens, periods
* Doesn't start/end with periods
* No consecutive periods

### Capability Settings Invalid

JSON settings must be properly formatted:

```bash theme={null} theme={null}
# Correct format
asc bundle-ids capabilities add --bundle "BUNDLE_ID" \
  --capability ICLOUD \
  --settings '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_13","enabled":true}]}]'
```

Validate JSON:

```bash theme={null} theme={null}
echo '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_13","enabled":true}]}]' | jq .
```

### Provisioning Profiles Invalid After Capability Change

After adding or removing capabilities, regenerate profiles:

```bash theme={null} theme={null}
# List affected profiles
asc bundle-ids profiles list --id "BUNDLE_ID"

# Delete old profiles
asc profiles delete --id "PROFILE_ID" --confirm

# Create new profiles with updated capabilities
asc profiles create --name "Updated Profile" \
  --profile-type IOS_APP_STORE \
  --bundle "BUNDLE_ID" \
  --certificate "CERT_ID"
```

## Related Commands

* [Signing](/commands/signing) - Fetch signing assets
* [Profiles](/commands/profiles) - Manage provisioning profiles
* [Certificates](/commands/certificates) - Manage certificates
