app_store_dev_api 0.3.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4b465858ed4f19c0c756e6cd8015c60f3c6d1b1abfc942511358b1812e67c00
4
- data.tar.gz: 2c1db48f308133776a4b54bb39c7fbd5c21efdfb5396a65d38154cb9a2de4b6c
3
+ metadata.gz: 2175a1360a7aa40db6f60b7e15df9f93310e58e053e041974f4b3c5fbce3618a
4
+ data.tar.gz: 93413b3d0070c95f9b4be1e5be07c87c129ba8c9295fbca43276148073239682
5
5
  SHA512:
6
- metadata.gz: 549b8f18858dea46ffecee88a2c0fe69cd59ace82a6d5e41fba3289c0c2cbdcd5ab848f36339589220d1024c3595f0fc444f8f1e4a95224ee09d3f726eba89e1
7
- data.tar.gz: cd2d09150518ca605fc2a2db990627f1e10fa9b3e8a61c5e1174c515727cb4c6bf5e0794565269ff2fdf76a0a35a18beb0429ae7be9a366bf08732f8dbb9754c
6
+ metadata.gz: 946236edccb94d43267c05c88df1e6a97007f691085425014d360c9875773c4e89857fe2eca6ada46b530014eb970846c0342344942c8117ad48bc46c7d638e6
7
+ data.tar.gz: 79804de240038cba93ab8323709bc7116a9df6fc60b8a6cde94f103e3c96ab16d57a9ae5697d4d106df517d02ff05c7534f6538fdd50e44c2f6f19d56884d739
data/.DS_Store CHANGED
Binary file
@@ -3,7 +3,6 @@
3
3
  "allow": [
4
4
  "mcp__playwright__browser_navigate",
5
5
  "mcp__playwright__browser_evaluate",
6
- "Bash(mkdir:*)",
7
6
  "mcp__markdownify__webpage-to-markdown",
8
7
  "mcp__playwright__browser_wait_for",
9
8
  "mcp__playwright__browser_click",
@@ -12,24 +11,8 @@
12
11
  "mcp__playwright__browser_close",
13
12
  "mcp__playwright__browser_type",
14
13
  "mcp__playwright__browser_press_key",
15
- "Bash(git checkout:*)",
16
- "Bash(bundle exec rspec:*)",
17
- "Bash(bundle:*)",
18
- "Bash(ruby:*)",
19
- "Bash(gem install:*)",
20
- "Bash(git add:*)",
21
- "Bash(git commit:*)",
22
- "WebSearch",
23
- "Bash(cat:*)",
24
- "Bash(python3:*)",
25
- "Bash(chmod:*)",
26
- "Bash(find:*)",
27
- "Bash(bash:*)",
28
- "Bash(gem list:*)",
29
- "Bash(rake help:*)",
30
- "Bash(rake validate:*)",
31
- "Bash(rake install_local:*)",
32
- "Bash(timeout 180 bundle install:*)"
14
+ "Bash(*)",
15
+ "WebFetch(*)"
33
16
  ],
34
17
  "deny": [],
35
18
  "ask": [],
data/Gemfile CHANGED
@@ -6,3 +6,8 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
+
10
+ gem "bigdecimal", "~> 3.2"
11
+
12
+ gem "mutex_m", "~> 0.3.0"
13
+ gem "drb", "~> 2.2"
data/Gemfile.lock CHANGED
@@ -37,6 +37,7 @@ GEM
37
37
  async-pool (0.4.0)
38
38
  async (>= 1.25)
39
39
  base64 (0.1.2)
40
+ bigdecimal (3.2.3)
40
41
  cgi (0.3.6)
41
42
  coderay (1.1.3)
42
43
  concurrent-ruby (1.2.2)
@@ -46,6 +47,7 @@ GEM
46
47
  rexml
47
48
  diff-lcs (1.5.0)
48
49
  docile (1.4.0)
50
+ drb (2.2.3)
49
51
  erb (4.0.2)
50
52
  cgi (>= 0.3.3)
51
53
  factory_bot (6.2.1)
@@ -96,6 +98,7 @@ GEM
96
98
  method_source (1.0.0)
97
99
  minitest (5.18.0)
98
100
  multi_json (1.15.0)
101
+ mutex_m (0.3.0)
99
102
  nenv (0.3.0)
100
103
  notiffany (0.1.3)
101
104
  nenv (~> 0.1)
@@ -188,11 +191,14 @@ PLATFORMS
188
191
 
189
192
  DEPENDENCIES
190
193
  app_store_dev_api!
194
+ bigdecimal (~> 3.2)
191
195
  bundler (~> 2.4, >= 2.4.0)
196
+ drb (~> 2.2)
192
197
  erb (~> 4.0.2)
193
198
  factory_bot (~> 6.2.1)
194
199
  github_changelog_generator (= 1.16.4)
195
200
  guard-rspec (~> 4.7.3)
201
+ mutex_m (~> 0.3.0)
196
202
  pry (~> 0.14.1)
197
203
  rake (~> 13.0)
198
204
  rspec (~> 3.12.0)
@@ -0,0 +1,382 @@
1
+ # Bundle ID Capabilities - App Store Connect API
2
+
3
+ > 官方文档: https://developer.apple.com/documentation/appstoreconnectapi/bundle-id-capabilities
4
+
5
+ ## 概述
6
+
7
+ Bundle ID Capabilities 用于管理 Bundle ID 的功能配置(如推送通知、iCloud、Apple Pay 等)。通过这些 API,你可以为 Bundle ID 启用、更新或移除特定的平台能力。
8
+
9
+ ## 数据模型
10
+
11
+ ### BundleIdCapability 对象
12
+
13
+ | 字段 | 类型 | 说明 |
14
+ |------|------|------|
15
+ | `type` | string | 固定值 `"bundleIdCapabilities"` |
16
+ | `id` | string | 资源唯一标识 |
17
+ | `attributes.capabilityType` | CapabilityType | 能力类型 |
18
+ | `attributes.settings` | CapabilitySetting[] | 能力的配置选项列表 |
19
+
20
+ ### CapabilityType 枚举
21
+
22
+ | 值 | 说明 |
23
+ |----|------|
24
+ | `ICLOUD` | iCloud 服务 |
25
+ | `IN_APP_PURCHASE` | 应用内购买 |
26
+ | `GAME_CENTER` | 游戏中心 |
27
+ | `PUSH_NOTIFICATIONS` | 推送通知 |
28
+ | `WALLET` | 钱包(Passbook) |
29
+ | `INTER_APP_AUDIO` | 应用间音频 |
30
+ | `MAPS` | 地图 |
31
+ | `ASSOCIATED_DOMAINS` | 关联域名 |
32
+ | `PERSONAL_VPN` | 个人 VPN |
33
+ | `APP_GROUPS` | 应用组 |
34
+ | `HEALTHKIT` | 健康套件 |
35
+ | `HOMEKIT` | 家居套件 |
36
+ | `WIRELESS_ACCESSORY_CONFIGURATION` | 无线配件配置 |
37
+ | `APPLE_PAY` | Apple Pay |
38
+ | `DATA_PROTECTION` | 数据保护 |
39
+ | `SIRIKIT` | Siri 套件 |
40
+ | `NETWORK_EXTENSIONS` | 网络扩展 |
41
+ | `MULTIPATH` | 多路径 |
42
+ | `HOT_SPOT` | 热点 |
43
+ | `NFC_TAG_READING` | NFC 标签读取 |
44
+ | `CLASSKIT` | ClassKit 教育框架 |
45
+ | `AUTOFILL_CREDENTIAL_PROVIDER` | 自动填充凭证提供者 |
46
+ | `ACCESS_WIFI_INFORMATION` | 访问 WiFi 信息 |
47
+ | `NETWORK_CUSTOM_PROTOCOL` | 自定义网络协议 |
48
+ | `COREMEDIA_HLS_LOW_LATENCY` | CoreMedia HLS 低延迟 |
49
+ | `SYSTEM_EXTENSION_INSTALL` | 系统扩展安装 |
50
+ | `USER_MANAGEMENT` | 用户管理 |
51
+ | `APPLE_ID_AUTH` | Apple ID 登录(Sign in with Apple) |
52
+
53
+ ### CapabilitySetting 对象
54
+
55
+ 用于配置特定能力的详细设置。
56
+
57
+ | 字段 | 类型 | 说明 |
58
+ |------|------|------|
59
+ | `key` | string | 设置项标识 |
60
+ | `name` | string | 设置项名称 |
61
+ | `description` | string | 设置项描述 |
62
+ | `enabledByDefault` | boolean | 是否默认启用 |
63
+ | `visible` | boolean | 是否可见 |
64
+ | `allowedInstances` | string | 允许的实例数: `ENTRY`, `SINGLE`, `MULTIPLE` |
65
+ | `minInstances` | integer | 最小实例数 |
66
+ | `options` | CapabilityOption[] | 可选配置项列表 |
67
+
68
+ **CapabilitySetting.key 枚举:**
69
+
70
+ | 值 | 说明 |
71
+ |----|------|
72
+ | `ICLOUD_VERSION` | iCloud 版本配置 |
73
+ | `DATA_PROTECTION_PERMISSION_LEVEL` | 数据保护权限级别 |
74
+ | `APPLE_ID_AUTH_APP_CONSENT` | Apple ID 登录应用同意配置 |
75
+
76
+ ### CapabilityOption 对象
77
+
78
+ 能力设置的具体选项。
79
+
80
+ | 字段 | 类型 | 说明 |
81
+ |------|------|------|
82
+ | `key` | string | 选项标识 |
83
+ | `name` | string | 选项名称 |
84
+ | `description` | string | 选项描述 |
85
+ | `enabledByDefault` | boolean | 是否默认启用 |
86
+ | `enabled` | boolean | 当前是否启用 |
87
+ | `supportsWildcard` | boolean | 是否支持通配符 Bundle ID |
88
+
89
+ **CapabilityOption.key 枚举:**
90
+
91
+ | 值 | 说明 |
92
+ |----|------|
93
+ | `XCODE_5` | iCloud - Xcode 5 兼容模式(Key-Value Storage) |
94
+ | `XCODE_6` | iCloud - Xcode 6+ 模式(CloudKit) |
95
+ | `COMPLETE_PROTECTION` | 数据保护 - 完全保护 |
96
+ | `PROTECTED_UNLESS_OPEN` | 数据保护 - 除非打开否则保护 |
97
+ | `PROTECTED_UNTIL_FIRST_USER_AUTH` | 数据保护 - 首次用户认证前保护 |
98
+ | `PRIMARY_APP_CONSENT` | Apple ID 登录 - 主应用同意 |
99
+
100
+ ---
101
+
102
+ ## API 端点
103
+
104
+ ### 1. 启用 Bundle ID Capability
105
+
106
+ ```
107
+ POST /v1/bundleIdCapabilities
108
+ ```
109
+
110
+ 为指定的 Bundle ID 启用一项新的能力。
111
+
112
+ #### 请求体 (BundleIdCapabilityCreateRequest)
113
+
114
+ ```json
115
+ {
116
+ "data": {
117
+ "type": "bundleIdCapabilities",
118
+ "attributes": {
119
+ "capabilityType": "PUSH_NOTIFICATIONS",
120
+ "settings": []
121
+ },
122
+ "relationships": {
123
+ "bundleId": {
124
+ "data": {
125
+ "type": "bundleIds",
126
+ "id": "BUNDLE_ID_RESOURCE_ID"
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ ```
133
+
134
+ **必填字段:**
135
+
136
+ | 字段 | 类型 | 说明 |
137
+ |------|------|------|
138
+ | `attributes.capabilityType` | CapabilityType | **必填** - 要启用的能力类型 |
139
+ | `relationships.bundleId.data.id` | string | **必填** - 目标 Bundle ID 的资源 ID |
140
+
141
+ **可选字段:**
142
+
143
+ | 字段 | 类型 | 说明 |
144
+ |------|------|------|
145
+ | `attributes.settings` | CapabilitySetting[] | 可选 - 能力配置选项(nullable) |
146
+
147
+ #### 需要配置 settings 的能力类型
148
+
149
+ 大多数能力只需指定 `capabilityType`,但以下能力需要提供 `settings`:
150
+
151
+ **iCloud (`ICLOUD`)**
152
+ ```json
153
+ {
154
+ "settings": [
155
+ {
156
+ "key": "ICLOUD_VERSION",
157
+ "options": [
158
+ { "key": "XCODE_6", "enabled": true }
159
+ ]
160
+ }
161
+ ]
162
+ }
163
+ ```
164
+
165
+ **数据保护 (`DATA_PROTECTION`)**
166
+ ```json
167
+ {
168
+ "settings": [
169
+ {
170
+ "key": "DATA_PROTECTION_PERMISSION_LEVEL",
171
+ "options": [
172
+ { "key": "COMPLETE_PROTECTION", "enabled": true }
173
+ ]
174
+ }
175
+ ]
176
+ }
177
+ ```
178
+
179
+ **Apple ID 登录 (`APPLE_ID_AUTH`)**
180
+ ```json
181
+ {
182
+ "settings": [
183
+ {
184
+ "key": "APPLE_ID_AUTH_APP_CONSENT",
185
+ "options": [
186
+ { "key": "PRIMARY_APP_CONSENT", "enabled": true }
187
+ ]
188
+ }
189
+ ]
190
+ }
191
+ ```
192
+
193
+ #### 响应
194
+
195
+ | 状态码 | 说明 | 响应体 |
196
+ |--------|------|--------|
197
+ | 201 | 创建成功 | `BundleIdCapabilityResponse` |
198
+ | 400 | 请求参数错误 | `ErrorResponse` |
199
+ | 401 | 未认证 | `ErrorResponse` |
200
+ | 403 | 无权限 | `ErrorResponse` |
201
+ | 409 | 资源冲突(能力已启用) | `ErrorResponse` |
202
+ | 422 | 请求体无法处理 | `ErrorResponse` |
203
+ | 429 | 请求过于频繁 | `ErrorResponse` |
204
+
205
+ ---
206
+
207
+ ### 2. 更新 Bundle ID Capability
208
+
209
+ ```
210
+ PATCH /v1/bundleIdCapabilities/{id}
211
+ ```
212
+
213
+ 更新已启用的 Capability 配置。
214
+
215
+ #### 路径参数
216
+
217
+ | 参数 | 类型 | 说明 |
218
+ |------|------|------|
219
+ | `id` | string | **必填** - Capability 资源的唯一标识 |
220
+
221
+ #### 请求体 (BundleIdCapabilityUpdateRequest)
222
+
223
+ ```json
224
+ {
225
+ "data": {
226
+ "type": "bundleIdCapabilities",
227
+ "id": "CAPABILITY_RESOURCE_ID",
228
+ "attributes": {
229
+ "capabilityType": "DATA_PROTECTION",
230
+ "settings": [
231
+ {
232
+ "key": "DATA_PROTECTION_PERMISSION_LEVEL",
233
+ "options": [
234
+ { "key": "PROTECTED_UNLESS_OPEN", "enabled": true }
235
+ ]
236
+ }
237
+ ]
238
+ }
239
+ }
240
+ }
241
+ ```
242
+
243
+ **可更新字段:**
244
+
245
+ | 字段 | 类型 | 说明 |
246
+ |------|------|------|
247
+ | `attributes.capabilityType` | CapabilityType | 可选 - 能力类型(nullable) |
248
+ | `attributes.settings` | CapabilitySetting[] | 可选 - 更新的配置选项(nullable) |
249
+
250
+ #### 响应
251
+
252
+ | 状态码 | 说明 | 响应体 |
253
+ |--------|------|--------|
254
+ | 200 | 更新成功 | `BundleIdCapabilityResponse` |
255
+ | 400 | 请求参数错误 | `ErrorResponse` |
256
+ | 401 | 未认证 | `ErrorResponse` |
257
+ | 403 | 无权限 | `ErrorResponse` |
258
+ | 404 | 资源不存在 | `ErrorResponse` |
259
+ | 409 | 资源冲突 | `ErrorResponse` |
260
+ | 422 | 请求体无法处理 | `ErrorResponse` |
261
+ | 429 | 请求过于频繁 | `ErrorResponse` |
262
+
263
+ ---
264
+
265
+ ### 3. 移除 Bundle ID Capability
266
+
267
+ ```
268
+ DELETE /v1/bundleIdCapabilities/{id}
269
+ ```
270
+
271
+ 移除 Bundle ID 上已启用的能力。
272
+
273
+ #### 路径参数
274
+
275
+ | 参数 | 类型 | 说明 |
276
+ |------|------|------|
277
+ | `id` | string | **必填** - Capability 资源的唯一标识 |
278
+
279
+ #### 响应
280
+
281
+ | 状态码 | 说明 |
282
+ |--------|------|
283
+ | 204 | 删除成功(无响应体) |
284
+ | 400 | 请求参数错误 |
285
+ | 401 | 未认证 |
286
+ | 403 | 无权限 |
287
+ | 404 | 资源不存在 |
288
+ | 429 | 请求过于频繁 |
289
+
290
+ ---
291
+
292
+ ## 端点汇总
293
+
294
+ | 方法 | 路径 | 说明 |
295
+ |------|------|------|
296
+ | `POST` | `/v1/bundleIdCapabilities` | 为 Bundle ID 启用新能力 |
297
+ | `PATCH` | `/v1/bundleIdCapabilities/{id}` | 更新已启用的能力配置 |
298
+ | `DELETE` | `/v1/bundleIdCapabilities/{id}` | 移除已启用的能力 |
299
+
300
+ > 查询 Bundle ID 关联的 Capabilities 请参见 [Bundle IDs](bundle_ids.md) 文档中的关联端点。
301
+
302
+ ---
303
+
304
+ ## 使用示例
305
+
306
+ ### 为 Bundle ID 启用推送通知
307
+
308
+ ```json
309
+ POST /v1/bundleIdCapabilities
310
+
311
+ {
312
+ "data": {
313
+ "type": "bundleIdCapabilities",
314
+ "attributes": {
315
+ "capabilityType": "PUSH_NOTIFICATIONS"
316
+ },
317
+ "relationships": {
318
+ "bundleId": {
319
+ "data": {
320
+ "type": "bundleIds",
321
+ "id": "ABC123DEF"
322
+ }
323
+ }
324
+ }
325
+ }
326
+ }
327
+ ```
328
+
329
+ ### 为 Bundle ID 启用 iCloud(CloudKit 模式)
330
+
331
+ ```json
332
+ POST /v1/bundleIdCapabilities
333
+
334
+ {
335
+ "data": {
336
+ "type": "bundleIdCapabilities",
337
+ "attributes": {
338
+ "capabilityType": "ICLOUD",
339
+ "settings": [
340
+ {
341
+ "key": "ICLOUD_VERSION",
342
+ "options": [
343
+ { "key": "XCODE_6", "enabled": true }
344
+ ]
345
+ }
346
+ ]
347
+ },
348
+ "relationships": {
349
+ "bundleId": {
350
+ "data": {
351
+ "type": "bundleIds",
352
+ "id": "ABC123DEF"
353
+ }
354
+ }
355
+ }
356
+ }
357
+ }
358
+ ```
359
+
360
+ ### 更新数据保护级别
361
+
362
+ ```json
363
+ PATCH /v1/bundleIdCapabilities/CAP_ID_123
364
+
365
+ {
366
+ "data": {
367
+ "type": "bundleIdCapabilities",
368
+ "id": "CAP_ID_123",
369
+ "attributes": {
370
+ "capabilityType": "DATA_PROTECTION",
371
+ "settings": [
372
+ {
373
+ "key": "DATA_PROTECTION_PERMISSION_LEVEL",
374
+ "options": [
375
+ { "key": "COMPLETE_PROTECTION", "enabled": true }
376
+ ]
377
+ }
378
+ ]
379
+ }
380
+ }
381
+ }
382
+ ```