Metadata-Version: 2.4
Name: asc-cli
Version: 0.2.0
Summary: A powerful CLI for Apple App Store Connect API
Project-URL: Homepage, https://github.com/yooz-labs/asc-cli
Project-URL: Documentation, https://github.com/yooz-labs/asc-cli#readme
Project-URL: Repository, https://github.com/yooz-labs/asc-cli
Project-URL: Issues, https://github.com/yooz-labs/asc-cli/issues
Author-email: Yooz Labs <hello@yooz.live>
License: BSD-3-Clause
License-File: LICENSE
Keywords: app-store-connect,apple,cli,subscriptions,testflight
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Build Tools
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyjwt[crypto]>=2.8.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: typer>=0.12.0
Provides-Extra: dev
Requires-Dist: mypy>=1.10.0; extra == 'dev'
Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.12.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: respx>=0.21.0; extra == 'dev'
Requires-Dist: ruff>=0.5.0; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0.0; extra == 'dev'
Description-Content-Type: text/markdown

# asc-cli

A powerful command-line interface for Apple App Store Connect API.

[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](LICENSE)
[![Python](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![codecov](https://codecov.io/github/yooz-labs/asc-cli/graph/badge.svg?token=8XGCPL63LP)](https://codecov.io/github/yooz-labs/asc-cli)

## Overview

`asc-cli` brings App Store Connect to your terminal. Manage subscriptions, pricing, TestFlight, and more without leaving the command line.

```bash
# Configure pricing for all territories
asc subscriptions pricing set --product pro.monthly --price 2.99

# Add a free trial
asc subscriptions offers create --product pro.monthly --type free-trial --duration 14d

# List TestFlight builds
asc testflight builds list --app "My App"

# Submit for review
asc apps submit --app "My App" --version 1.0.0
```

## Features

- **Subscriptions** - Create, configure, and manage auto-renewable subscriptions
- **Pricing** - Set prices across 175 territories with a single command
- **Introductory Offers** - Configure free trials, pay-as-you-go, and pay-up-front offers
- **Promotional Offers** - Manage promotional pricing campaigns
- **TestFlight** - Manage builds, beta groups, and testers
- **App Management** - Submit apps, manage versions, and more
- **Bulk Operations** - Apply changes across multiple products/territories

## Installation

### Using pip

```bash
pip install asc-cli
```

### Using Homebrew (coming soon)

```bash
brew install yooz-labs/tap/asc-cli
```

### From source

```bash
git clone https://github.com/yooz-labs/asc-cli.git
cd asc-cli
pip install -e .
```

## Quick Start

### 1. Get API Credentials

1. Go to [App Store Connect](https://appstoreconnect.apple.com)
2. Navigate to **Users and Access** → **Integrations** → **App Store Connect API**
3. Generate a new key with **Admin** or **App Manager** role
4. Download the `.p8` private key file
5. Note the **Key ID** and **Issuer ID**

### 2. Configure Authentication

```bash
# Interactive setup
asc auth login

# Or set environment variables
export ASC_ISSUER_ID="your-issuer-id"
export ASC_KEY_ID="your-key-id"
export ASC_PRIVATE_KEY_PATH="~/.asc/AuthKey_XXXXX.p8"
```

### 3. Start Using

```bash
# List your apps
asc apps list

# Get subscription info
asc subscriptions list --app "My App"

# Set pricing
asc subscriptions pricing set --subscription "pro.monthly" --price 2.99
```

## Command Reference

### Authentication

```bash
asc auth login              # Interactive authentication setup
asc auth status             # Check authentication status
asc auth logout             # Remove stored credentials
```

### Apps

```bash
asc apps list               # List all apps
asc apps info <bundle-id>   # Get app details
asc apps submit             # Submit for App Review
```

### Subscriptions

```bash
asc subscriptions list                    # List subscription groups
asc subscriptions create                  # Create a new subscription
asc subscriptions delete <id>             # Delete a subscription
asc subscriptions pricing list            # List current pricing
asc subscriptions pricing set             # Set pricing
asc subscriptions offers list             # List introductory offers
asc subscriptions offers create           # Create an offer
asc subscriptions offers delete           # Delete an offer
```

### TestFlight

```bash
asc testflight builds list                # List builds
asc testflight builds expire <id>         # Expire a build
asc testflight groups list                # List beta groups
asc testflight groups create              # Create a beta group
asc testflight testers list               # List testers
asc testflight testers add                # Add a tester
asc testflight testers remove             # Remove a tester
```

### Bulk Operations

```bash
asc bulk pricing --file pricing.yaml      # Apply pricing from YAML
asc bulk offers --file offers.yaml        # Apply offers from YAML
```

## Configuration Files

### Pricing Configuration (pricing.yaml)

```yaml
subscriptions:
  - product_id: com.example.app.pro.monthly
    base_price: 2.99
    currency: USD
    territories: all  # or list specific ones

  - product_id: com.example.app.pro.yearly
    base_price: 29.99
    currency: USD
    territories:
      - USA
      - GBR
      - DEU
```

### Offers Configuration (offers.yaml)

```yaml
introductory_offers:
  - product_id: com.example.app.pro.monthly
    type: free-trial
    duration: 14  # days
    territories: all

  - product_id: com.example.app.pro.monthly
    type: pay-as-you-go
    duration: 3  # months
    price: 1.99
    territories: all
```

## Environment Variables

| Variable | Description |
|----------|-------------|
| `ASC_ISSUER_ID` | App Store Connect Issuer ID |
| `ASC_KEY_ID` | API Key ID |
| `ASC_PRIVATE_KEY_PATH` | Path to .p8 private key file |
| `ASC_PRIVATE_KEY` | Private key contents (alternative to path) |

## Contributing

Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details.

## Legal

This tool is not affiliated with, endorsed by, or sponsored by Apple Inc. App Store Connect is a trademark of Apple Inc.

Users are responsible for complying with Apple's [App Store Connect API Terms of Service](https://developer.apple.com/support/terms/).

## Documentation

Full documentation available at [docs.yooz.live/tools/asc-cli](https://docs.yooz.live/tools/asc-cli).

## License

BSD 3-Clause License - see [LICENSE](LICENSE) for details.
