storeconfig 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +292 -0
- package/dist/cli.js +75 -0
- package/dist/cli.js.map +7 -0
- package/package.json +66 -0
package/README.md
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# Store Config CLI
|
|
2
|
+
|
|
3
|
+
A powerful command-line tool for managing apps on **App Store Connect**. Manage **in-app purchases**, **subscriptions**, **pricing**, **localizations**, **metadata**, **availability**, and more. Sync your app configurations from local JSON files to App Store Connect - the smart way. **No more manual work**.
|
|
4
|
+
|
|
5
|
+
[](https://badge.fury.io/js/storeconfig)
|
|
6
|
+
|
|
7
|
+
## 🚀 Quick Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Install globally
|
|
11
|
+
npm install -g storeconfig
|
|
12
|
+
|
|
13
|
+
# Or use with npx
|
|
14
|
+
npx storeconfig --help
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 📖 Documentation
|
|
18
|
+
|
|
19
|
+
For detailed documentation, visit [storeconfig.com/docs](https://storeconfig.com/docs)
|
|
20
|
+
|
|
21
|
+
## ✨ Features
|
|
22
|
+
|
|
23
|
+
- **😌 Easy to Use** - Prepare App Store Connect for your app in minutes instead of hours. What normally takes 2+ hours of manual work is now done in minutes.
|
|
24
|
+
- **⚡️ Quick App Duplication** - Copy App Store Connect data from an existing app to a new app in minutes.
|
|
25
|
+
- **📄 Configuration as Code** - Define your app structure in version-controlled JSON files.
|
|
26
|
+
- **🤖 AI-Powered Editing** - Use any AI tool to modify your JSON configuration for app descriptions, content updates, and more.
|
|
27
|
+
- **🌍 Multi-Language Support** - Easily manage localized content across all supported territories.
|
|
28
|
+
- **📊 Bulk Operations** - Make changes across multiple products, subscriptions, or territories at once.
|
|
29
|
+
- **🔄 Bidirectional Sync** - Fetch current state of your app and apply changes to App Store Connect.
|
|
30
|
+
- **💰 Interactive Pricing** - Set prices across territories based on Purchasing Power Parity (PPP) for fair pricing to increase revenue. Also supports Apple's standard pricing tiers.
|
|
31
|
+
|
|
32
|
+
## 🛠 Installation
|
|
33
|
+
|
|
34
|
+
### Global Installation
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g storeconfig
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Local Installation
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm install storeconfig
|
|
44
|
+
npx storeconfig --help
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 🔧 Setup
|
|
48
|
+
|
|
49
|
+
### 1. Sign Up & Get Secret Key
|
|
50
|
+
|
|
51
|
+
First, sign up at [storeconfig.com](https://storeconfig.com) to get your Secret Key.
|
|
52
|
+
|
|
53
|
+
### 2. Authentication
|
|
54
|
+
|
|
55
|
+
Set up your App Store Connect API credentials:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Configure StoreConfig with the StoreConfig Secret Key
|
|
59
|
+
storeconfig configure
|
|
60
|
+
|
|
61
|
+
# Add Apple credentials
|
|
62
|
+
# See below for how to get the key and IDs.
|
|
63
|
+
storeconfig apple \
|
|
64
|
+
--issuer-id YOUR_ISSUER_ID \
|
|
65
|
+
--key-id YOUR_KEY_ID \
|
|
66
|
+
--key-path /path/to/your/AuthKey_XXXXX.p8
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### Get App Store Connect Key and IDs
|
|
70
|
+
|
|
71
|
+
This is required for store config to manage your apps on App Store Connect.
|
|
72
|
+
|
|
73
|
+
1. **Open App Store Connect API Settings**
|
|
74
|
+
|
|
75
|
+
- Go to [https://appstoreconnect.apple.com/access/integrations/api](https://appstoreconnect.apple.com/access/integrations/api)
|
|
76
|
+
- Make sure the correct team is selected on top right corner of the page
|
|
77
|
+
|
|
78
|
+
2. **Create a New Team Key**
|
|
79
|
+
|
|
80
|
+
- Click the "Plus" button to create a new `Team Key` (Not Individual Key)
|
|
81
|
+
- Choose a descriptive name (e.g., "StoreConfig") to easily identify it later
|
|
82
|
+
|
|
83
|
+
3. **Set Required Permissions**
|
|
84
|
+
|
|
85
|
+
- Select **App Manager Access** - this is required to manage prices and other app configurations
|
|
86
|
+
|
|
87
|
+
4. **Download and Copy Credentials**
|
|
88
|
+
- Download the `.p8` file. This is the `--key-path` for the `apple` command.
|
|
89
|
+
- **Key ID** is the `--key-id` for the `apple` command.
|
|
90
|
+
- **Issuer ID** is the `--issuer-id` for the `apple` command.
|
|
91
|
+
|
|
92
|
+
## 📋 Commands
|
|
93
|
+
|
|
94
|
+
#### `fetch`
|
|
95
|
+
|
|
96
|
+
Fetch current app configuration from App Store Connect. Easiest way to get started. Fetch the app you want to manage or fetch another app to use as a template for your new app.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Show all your apps to select from (saves to storeconfig.json by default)
|
|
100
|
+
storeconfig fetch
|
|
101
|
+
|
|
102
|
+
# Fetch specific app by ID
|
|
103
|
+
storeconfig fetch --id 1234567890
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### `apply`
|
|
107
|
+
|
|
108
|
+
Apply changes from JSON file to App Store Connect after making changes on it. It will preview the changes and ask for approval before applying them.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Apply changes (uses storeconfig.json by default)
|
|
112
|
+
storeconfig apply
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### `set-price`
|
|
116
|
+
|
|
117
|
+
Set prices for your app, in-app purchases, and subscriptions interactively. This updates pricing only in your configuration file; changes won't be applied to App Store Connect until you run the `apply` command.
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Set prices (uses storeconfig.json by default)
|
|
121
|
+
storeconfig set-price
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### `compare-price`
|
|
125
|
+
|
|
126
|
+
Compare prices across territories in USD. Useful to see how your pricing compares to other territories.
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# Compare prices (uses storeconfig.json and outputs to compare-price.csv by default)
|
|
130
|
+
storeconfig compare-price
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### `example`
|
|
134
|
+
|
|
135
|
+
Generate example JSON files for different data types. Useful to get started or to see how to structure your JSON file.
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Interactive selection of example type
|
|
139
|
+
storeconfig example
|
|
140
|
+
|
|
141
|
+
# Generate minimal app example
|
|
142
|
+
storeconfig example --type minimal
|
|
143
|
+
|
|
144
|
+
# Generate full app example
|
|
145
|
+
storeconfig example --type full
|
|
146
|
+
|
|
147
|
+
# Generate subscription example
|
|
148
|
+
storeconfig example --type subscription
|
|
149
|
+
|
|
150
|
+
# Generate in-app purchase example
|
|
151
|
+
storeconfig example --type iap
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 📁 Example JSON Structure
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"schemaVersion": "1.0.0",
|
|
159
|
+
"appId": "1234567890",
|
|
160
|
+
"versionString": "2.1.17",
|
|
161
|
+
"pricing": {
|
|
162
|
+
"baseTerritory": "USA",
|
|
163
|
+
"prices": [
|
|
164
|
+
{
|
|
165
|
+
"price": "0",
|
|
166
|
+
"territory": "USA"
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
"availableTerritories": "worldwide",
|
|
171
|
+
"inAppPurchases": [
|
|
172
|
+
{
|
|
173
|
+
"productId": "com.mycompany.myapp.premium",
|
|
174
|
+
"type": "NON_CONSUMABLE",
|
|
175
|
+
"referenceName": "Premium",
|
|
176
|
+
"familySharable": false,
|
|
177
|
+
"pricing": {
|
|
178
|
+
"baseTerritory": "USA",
|
|
179
|
+
"prices": [
|
|
180
|
+
{
|
|
181
|
+
"price": "49.99",
|
|
182
|
+
"territory": "USA"
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
"availability": {
|
|
187
|
+
"availableInNewTerritories": true,
|
|
188
|
+
"availableTerritories": "worldwide"
|
|
189
|
+
},
|
|
190
|
+
"localizations": [
|
|
191
|
+
{
|
|
192
|
+
"locale": "en-US",
|
|
193
|
+
"name": "Premium Upgrade",
|
|
194
|
+
"description": "Unlock all premium features"
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
],
|
|
199
|
+
"primaryLocale": "en-US",
|
|
200
|
+
"localizations": [
|
|
201
|
+
{
|
|
202
|
+
"locale": "en-US",
|
|
203
|
+
"name": "My Awesome App",
|
|
204
|
+
"subtitle": "The best app ever",
|
|
205
|
+
"description": "The best app ever in the whole world",
|
|
206
|
+
"keywords": "best,app,ever",
|
|
207
|
+
"promotionalText": "The best app ever in the whole world",
|
|
208
|
+
"whatsNew": "Bug fixes and improvements"
|
|
209
|
+
}
|
|
210
|
+
]
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## 🧰 AI Integration - IDE Support - JSON Schema
|
|
215
|
+
|
|
216
|
+
StoreConfig provides a JSON Schema that enhances the development experience by offering validation, autocomplete, and IntelliSense support in your favorite IDE, while also improving results with AI tools.
|
|
217
|
+
|
|
218
|
+
### AI Integration
|
|
219
|
+
|
|
220
|
+
When using AI tools to modify your StoreConfig JSON files, provide the schema URL for more accurate and consistent results:
|
|
221
|
+
|
|
222
|
+
**JSON Schema URL:** `https://storeconfig.com/storeconfig-schema.json`
|
|
223
|
+
|
|
224
|
+
### VSCode Setup
|
|
225
|
+
|
|
226
|
+
1. **Open VSCode Settings** (Cmd/Ctrl + ,)
|
|
227
|
+
2. **Search for "json schema"**
|
|
228
|
+
3. **Ensure Schema Download is enabled:**
|
|
229
|
+
4. **Click "Edit in settings.json"**
|
|
230
|
+
5. **Add the following configuration:**
|
|
231
|
+
|
|
232
|
+
```json
|
|
233
|
+
// root settings.json
|
|
234
|
+
{
|
|
235
|
+
// Other settings (if any)...
|
|
236
|
+
"json.schemas": [
|
|
237
|
+
// Other schemas (if any)...
|
|
238
|
+
{
|
|
239
|
+
"fileMatch": ["*storeconfig*.json"],
|
|
240
|
+
"url": "https://storeconfig.com/storeconfig-schema.json"
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
> **Note:** You can add this configuration to either:
|
|
247
|
+
>
|
|
248
|
+
> - **User Settings** (applies to all your projects)
|
|
249
|
+
> - **Workspace Settings** (applies only to the current project)
|
|
250
|
+
|
|
251
|
+
### Benefits
|
|
252
|
+
|
|
253
|
+
- ✅ **Real-time validation** - Catch errors as you type
|
|
254
|
+
- ✅ **Autocomplete** - Get suggestions for properties and values
|
|
255
|
+
- ✅ **Documentation** - Hover over properties to see descriptions
|
|
256
|
+
- ✅ **Type safety** - Ensure your JSON structure is correct
|
|
257
|
+
|
|
258
|
+
### Schema URL
|
|
259
|
+
|
|
260
|
+
The JSON Schema is available at: [https://storeconfig.com/storeconfig-schema.json](https://storeconfig.com/storeconfig-schema.json)
|
|
261
|
+
|
|
262
|
+
### Tool Limitations
|
|
263
|
+
|
|
264
|
+
Due to current App Store Connect API restrictions, some features are not yet available in the CLI. As soon as these capabilities are supported by the API, we will update the CLI accordingly.
|
|
265
|
+
|
|
266
|
+
- **Creating a New App**: New apps can only be created via the App Store Connect website.
|
|
267
|
+
- **App Privacy**: App Privacy data can only be created or updated through the App Store Connect website. This process is repetitive, and we plan to add support once the API allows it.
|
|
268
|
+
- **State Management**: Submitting apps, in-app purchases, and subscriptions is not supported. These actions are usually performed as a final step and are not repetitive or particularly difficult to do manually.
|
|
269
|
+
- **Age Rating**: Setting age ratings for apps is not currently supported.
|
|
270
|
+
- **Start and End Dates**: Setting start and end dates for in-app purchases and subscriptions is not supported.
|
|
271
|
+
- **Promo Offers**: Promo offers for subscriptions are not supported.
|
|
272
|
+
- **Billing Grace Period**: Billing grace period for subscriptions is not supported.
|
|
273
|
+
|
|
274
|
+
### Planned Features
|
|
275
|
+
|
|
276
|
+
- **App Category**: Support for setting app categories will be added soon.
|
|
277
|
+
- **Content Rights**: Support for managing content rights will be added soon.
|
|
278
|
+
- **iOS Platform**: Currently, only the iOS platform is supported. We plan to add support for additional platforms in the future.
|
|
279
|
+
|
|
280
|
+
### Security
|
|
281
|
+
|
|
282
|
+
- StoreConfig Secret Keys are stored in your local machine
|
|
283
|
+
- Apple credentials and key are securely sent and stored on our servers for app management purposes. You can revoke access at any time through Apple or contact us to delete your user data and credentials.
|
|
284
|
+
|
|
285
|
+
## Support
|
|
286
|
+
|
|
287
|
+
- 📚 [Documentation](https://storeconfig.com/docs)
|
|
288
|
+
- 📄 [Schemas Documentation](https://storeconfig.com/schemas)
|
|
289
|
+
- 📄 [JSON Schema](https://storeconfig.com/storeconfig-schema.json)
|
|
290
|
+
- 🐛 [Report Issues](https://github.com/semihcihan/storeconfig/issues)
|
|
291
|
+
|
|
292
|
+
This CLI is proprietary software. Usage requires a valid subscription and Secret Key from [StoreConfig](https://storeconfig.com).
|