eas-cli 0.54.1 → 0.56.0

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.
Files changed (74) hide show
  1. package/README.md +44 -44
  2. package/build/build/android/build.js +2 -1
  3. package/build/build/android/version.d.ts +5 -0
  4. package/build/build/android/version.js +16 -9
  5. package/build/build/build.d.ts +2 -2
  6. package/build/build/build.js +16 -5
  7. package/build/build/context.d.ts +4 -3
  8. package/build/build/createContext.d.ts +5 -2
  9. package/build/build/createContext.js +3 -1
  10. package/build/build/ios/build.js +3 -17
  11. package/build/build/ios/syncProjectConfiguration.d.ts +3 -3
  12. package/build/build/ios/syncProjectConfiguration.js +2 -2
  13. package/build/build/ios/version.d.ts +10 -3
  14. package/build/build/ios/version.js +57 -28
  15. package/build/build/metadata.js +1 -1
  16. package/build/build/runBuildAndSubmit.d.ts +2 -0
  17. package/build/build/runBuildAndSubmit.js +19 -3
  18. package/build/build/types.d.ts +4 -0
  19. package/build/build/types.js +6 -1
  20. package/build/commands/build/index.d.ts +2 -0
  21. package/build/commands/build/index.js +8 -1
  22. package/build/commands/build/version/set.d.ts +10 -0
  23. package/build/commands/build/version/set.js +82 -0
  24. package/build/commands/build/version/sync.d.ts +12 -0
  25. package/build/commands/build/version/sync.js +124 -0
  26. package/build/commands/update/index.d.ts +1 -0
  27. package/build/commands/update/index.js +15 -4
  28. package/build/credentials/ios/types.d.ts +2 -0
  29. package/build/env.d.ts +11 -0
  30. package/build/env.js +12 -0
  31. package/build/graphql/generated.d.ts +102 -2
  32. package/build/graphql/generated.js +10 -1
  33. package/build/graphql/mutations/AppVersionMutation.d.ts +11 -0
  34. package/build/graphql/mutations/AppVersionMutation.js +28 -0
  35. package/build/graphql/mutations/BuildMutation.d.ts +3 -1
  36. package/build/graphql/mutations/BuildMutation.js +14 -2
  37. package/build/graphql/queries/AppVersionQuery.d.ts +4 -0
  38. package/build/graphql/queries/AppVersionQuery.js +37 -0
  39. package/build/graphql/queries/WebhookQuery.d.ts +1 -1
  40. package/build/metadata/apple/config/reader.d.ts +2 -1
  41. package/build/metadata/apple/config/reader.js +66 -9
  42. package/build/metadata/apple/config/writer.d.ts +3 -2
  43. package/build/metadata/apple/config/writer.js +64 -12
  44. package/build/metadata/apple/data.d.ts +2 -1
  45. package/build/metadata/apple/tasks/app-review-detail.d.ts +14 -0
  46. package/build/metadata/apple/tasks/app-review-detail.js +49 -0
  47. package/build/metadata/apple/tasks/app-version.js +2 -2
  48. package/build/metadata/apple/tasks/index.js +2 -1
  49. package/build/metadata/apple/types.d.ts +9 -11
  50. package/build/metadata/errors.d.ts +5 -0
  51. package/build/metadata/errors.js +18 -9
  52. package/build/metadata/upload.js +13 -3
  53. package/build/platform.d.ts +1 -0
  54. package/build/platform.js +17 -1
  55. package/build/project/android/applicationId.js +6 -2
  56. package/build/project/android/versions.d.ts +3 -0
  57. package/build/project/android/versions.js +23 -0
  58. package/build/project/applicationIdentifier.d.ts +4 -0
  59. package/build/project/applicationIdentifier.js +37 -0
  60. package/build/project/ios/bundleIdentifier.js +2 -2
  61. package/build/project/ios/target.js +14 -1
  62. package/build/project/ios/versions.d.ts +3 -0
  63. package/build/project/ios/versions.js +17 -0
  64. package/build/project/publish.d.ts +1 -2
  65. package/build/project/publish.js +15 -14
  66. package/build/project/remoteVersionSource.d.ts +6 -0
  67. package/build/project/remoteVersionSource.js +52 -0
  68. package/build/project/workflow.js +13 -11
  69. package/build/submit/utils/files.js +1 -1
  70. package/build/uploads.d.ts +9 -2
  71. package/build/uploads.js +21 -7
  72. package/oclif.manifest.json +1 -1
  73. package/package.json +9 -5
  74. package/schema/metadata-0.json +396 -336
@@ -19,102 +19,166 @@
19
19
  ]
20
20
  },
21
21
  "AppleKidsAge": {
22
- "enum": ["FIVE_AND_UNDER", "SIX_TO_EIGHT", "NINE_TO_ELEVEN"]
23
- },
24
- "AppleRating": {
25
- "enum": ["NONE", "INFREQUENT_OR_MILD", "FREQUENT_OR_INTENSE"]
26
- },
27
- "AppleCategory": {
28
22
  "enum": [
29
- "FOOD_AND_DRINK",
30
- "BUSINESS",
31
- "EDUCATION",
32
- "SOCIAL_NETWORKING",
33
- "BOOKS",
34
- "SPORTS",
35
- "FINANCE",
36
- "REFERENCE",
37
- "GRAPHICS_AND_DESIGN",
38
- "DEVELOPER_TOOLS",
39
- "HEALTH_AND_FITNESS",
40
- "MUSIC",
41
- "WEATHER",
42
- "TRAVEL",
43
- "ENTERTAINMENT",
44
- "STICKERS",
45
- "GAMES",
46
- "LIFESTYLE",
47
- "MEDICAL",
48
- "MAGAZINES_AND_NEWSPAPERS",
49
- "UTILITIES",
50
- "SHOPPING",
51
- "PRODUCTIVITY",
52
- "NEWS",
53
- "PHOTO_AND_VIDEO",
54
- "NAVIGATION"
23
+ "FIVE_AND_UNDER",
24
+ "SIX_TO_EIGHT",
25
+ "NINE_TO_ELEVEN"
55
26
  ]
56
27
  },
57
- "AppleSubcategory": {
28
+ "AppleRating": {
58
29
  "enum": [
59
- "STICKERS_PLACES_AND_OBJECTS",
60
- "STICKERS_EMOJI_AND_EXPRESSIONS",
61
- "STICKERS_CELEBRATIONS",
62
- "STICKERS_CELEBRITIES",
63
- "STICKERS_MOVIES_AND_TV",
64
- "STICKERS_SPORTS_AND_ACTIVITIES",
65
- "STICKERS_EATING_AND_DRINKING",
66
- "STICKERS_CHARACTERS",
67
- "STICKERS_ANIMALS",
68
- "STICKERS_FASHION",
69
- "STICKERS_ART",
70
- "STICKERS_GAMING",
71
- "STICKERS_KIDS_AND_FAMILY",
72
- "STICKERS_PEOPLE",
73
- "STICKERS_MUSIC",
74
- "GAMES_SPORTS",
75
- "GAMES_WORD",
76
- "GAMES_MUSIC",
77
- "GAMES_ADVENTURE",
78
- "GAMES_ACTION",
79
- "GAMES_ROLE_PLAYING",
80
- "GAMES_CASUAL",
81
- "GAMES_BOARD",
82
- "GAMES_TRIVIA",
83
- "GAMES_CARD",
84
- "GAMES_PUZZLE",
85
- "GAMES_CASINO",
86
- "GAMES_STRATEGY",
87
- "GAMES_SIMULATION",
88
- "GAMES_RACING",
89
- "GAMES_FAMILY"
30
+ "NONE",
31
+ "INFREQUENT_OR_MILD",
32
+ "FREQUENT_OR_INTENSE"
90
33
  ]
91
34
  },
92
- "AppleIdfa": {
93
- "description": "Identifier for Advertisers",
94
- "type": "object",
95
- "additionalProperties": false,
35
+ "AppleCategory": {
36
+ "type": "array",
37
+ "description": "App Store categories for the app, can add up to two categories. The first item in this list is the primary category, the second is the secondary and optional category. `STICKERS` and `GAMES` categories can add up to two additional subcategories, written as nested array.",
38
+ "markdownDescription": "App Store categories for the app, can add up to two categories. The first item in this list is the primary category, the second is the secondary and optional category. `STICKERS` and `GAMES` categories can add up to two additional subcategories, written as nested array. E.g.\n\n- `[\"SPORTS\"]`\n- `[\"SPORTS\", \"LIFESTYLE\"]`\n- `[[\"GAMES\", \"GAMES_CARD\"], \"ENTERTAINMENT\"]`\n- `[\"GAMES\", \"WEATHER\"]`",
39
+ "minItems": 1,
40
+ "maxItems": 2,
41
+ "uniqueItems": true,
96
42
  "defaultSnippets": [
43
+ {
44
+ "label": "Basic categories",
45
+ "description": "Add two simple categories",
46
+ "body": [
47
+ "$1",
48
+ "$2"
49
+ ]
50
+ },
51
+ {
52
+ "label": "Category with subcategories",
53
+ "description": "Add a category containing subcategories",
54
+ "body": [
55
+ [
56
+ "${1|GAMES,STICKERS|}",
57
+ "$3",
58
+ "$4"
59
+ ]
60
+ ]
61
+ }
62
+ ],
63
+ "items": {
64
+ "oneOf": [
97
65
  {
98
- "body": {
99
- "servesAds": false,
100
- "attributesAppInstallationToPreviousAd": false,
101
- "attributesActionWithPreviousAd": false,
102
- "honorsLimitedAdTracking": false
103
- }
66
+ "$ref": "#/definitions/apple/AppleCategory/categories/root"
67
+ },
68
+ {
69
+ "$ref": "#/definitions/apple/AppleCategory/categories/parent"
70
+ },
71
+ {
72
+ "type": "array",
73
+ "description": "The GAMES category can have additional subcategories",
74
+ "minItems": 1,
75
+ "maxItems": 3,
76
+ "uniqueItems": true,
77
+ "items": [
78
+ {
79
+ "const": "GAMES"
80
+ },
81
+ {
82
+ "$ref": "#/definitions/apple/AppleCategory/categories/games"
83
+ },
84
+ {
85
+ "$ref": "#/definitions/apple/AppleCategory/categories/games"
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "type": "array",
91
+ "description": "The STICKERS category can have additional subcategories",
92
+ "minItems": 1,
93
+ "maxItems": 3,
94
+ "uniqueItems": true,
95
+ "items": [
96
+ {
97
+ "const": "STICKERS"
98
+ },
99
+ {
100
+ "$ref": "#/definitions/apple/AppleCategory/categories/stickers"
101
+ },
102
+ {
103
+ "$ref": "#/definitions/apple/AppleCategory/categories/stickers"
104
+ }
105
+ ]
104
106
  }
105
- ],
106
- "properties": {
107
- "servesAds": {
108
- "type": "boolean"
107
+ ]
108
+ },
109
+ "categories": {
110
+ "root": {
111
+ "enum": [
112
+ "BUSINESS",
113
+ "SOCIAL_NETWORKING",
114
+ "MEDICAL",
115
+ "FOOD_AND_DRINK",
116
+ "EDUCATION",
117
+ "BOOKS",
118
+ "SPORTS",
119
+ "FINANCE",
120
+ "REFERENCE",
121
+ "GRAPHICS_AND_DESIGN",
122
+ "DEVELOPER_TOOLS",
123
+ "HEALTH_AND_FITNESS",
124
+ "MUSIC",
125
+ "WEATHER",
126
+ "TRAVEL",
127
+ "ENTERTAINMENT",
128
+ "LIFESTYLE",
129
+ "MAGAZINES_AND_NEWSPAPERS",
130
+ "UTILITIES",
131
+ "SHOPPING",
132
+ "PRODUCTIVITY",
133
+ "NEWS",
134
+ "PHOTO_AND_VIDEO",
135
+ "NAVIGATION"
136
+ ]
109
137
  },
110
- "attributesAppInstallationToPreviousAd": {
111
- "type": "boolean"
138
+ "parent": {
139
+ "enum": [
140
+ "GAMES",
141
+ "STICKERS"
142
+ ]
112
143
  },
113
- "attributesActionWithPreviousAd": {
114
- "type": "boolean"
144
+ "games": {
145
+ "enum": [
146
+ "GAMES_SPORTS",
147
+ "GAMES_WORD",
148
+ "GAMES_MUSIC",
149
+ "GAMES_ADVENTURE",
150
+ "GAMES_ACTION",
151
+ "GAMES_ROLE_PLAYING",
152
+ "GAMES_CASUAL",
153
+ "GAMES_BOARD",
154
+ "GAMES_TRIVIA",
155
+ "GAMES_CARD",
156
+ "GAMES_PUZZLE",
157
+ "GAMES_CASINO",
158
+ "GAMES_STRATEGY",
159
+ "GAMES_SIMULATION",
160
+ "GAMES_RACING",
161
+ "GAMES_FAMILY"
162
+ ]
115
163
  },
116
- "honorsLimitedAdTracking": {
117
- "type": "boolean"
164
+ "stickers": {
165
+ "enum": [
166
+ "STICKERS_PLACES_AND_OBJECTS",
167
+ "STICKERS_EMOJI_AND_EXPRESSIONS",
168
+ "STICKERS_CELEBRATIONS",
169
+ "STICKERS_CELEBRITIES",
170
+ "STICKERS_MOVIES_AND_TV",
171
+ "STICKERS_SPORTS_AND_ACTIVITIES",
172
+ "STICKERS_EATING_AND_DRINKING",
173
+ "STICKERS_CHARACTERS",
174
+ "STICKERS_ANIMALS",
175
+ "STICKERS_FASHION",
176
+ "STICKERS_ART",
177
+ "STICKERS_GAMING",
178
+ "STICKERS_KIDS_AND_FAMILY",
179
+ "STICKERS_PEOPLE",
180
+ "STICKERS_MUSIC"
181
+ ]
118
182
  }
119
183
  }
120
184
  },
@@ -123,240 +187,278 @@
123
187
  "additionalProperties": false,
124
188
  "required": [
125
189
  "title",
126
- "subtitle",
127
- "description",
128
- "keywords",
129
- "marketingUrl",
130
- "supportUrl",
131
190
  "privacyPolicyUrl"
132
191
  ],
133
192
  "defaultSnippets": [
134
193
  {
135
194
  "label": "Basic",
195
+ "description": "Create the minimum required locale properties",
136
196
  "body": {
197
+ "title": "${1:App title}",
198
+ "privacyPolicyUrl": "https://${3:www.}"
137
199
  }
138
200
  },
139
201
  {
140
- "label": "Interactive",
141
- "description": "Creates localized app info",
202
+ "label": "Full",
203
+ "description": "Create all available locale properties",
142
204
  "body": {
143
- "title": "$1",
144
- "subtitle": "$2",
145
- "description": "$3",
146
- "keywords": [],
147
- "marketingUrl": "",
148
- "supportUrl": "",
149
- "privacyPolicyUrl": ""
205
+ "title": "${1:App title}",
206
+ "subtitle": "${2:Subtitle for your app}",
207
+ "description": "${3:A longer description of what your app does}",
208
+ "keywords": [
209
+ "${4:keyword}"
210
+ ],
211
+ "releaseNotes": "${5:Bug fixes and improved stability}",
212
+ "promoText": "${6:Short tagline for your app}",
213
+ "marketingUrl": "https://${7:www.}",
214
+ "supportUrl": "https://${8:www.}",
215
+ "privacyPolicyUrl": "https://${9:www.}",
216
+ "privacyChoicesUrl": "https://${10:www.}"
150
217
  }
151
218
  }
152
219
  ],
153
220
  "properties": {
154
221
  "title": {
155
- "description": "Name of the app in the store. This should be similar to the installed app name.",
156
222
  "type": "string",
223
+ "description": "Name of the app in the store. This should be similar to the installed app name.",
224
+ "minLength": 2,
157
225
  "maxLength": 30,
158
226
  "meta": {
159
227
  "storeInfo": "The name will be reviewed before it is made available on the App Store."
160
228
  }
161
229
  },
162
230
  "subtitle": {
163
- "description": "Subtext for the app. Example: 'A Fun Game For Friends'",
164
231
  "type": "string",
232
+ "description": "Subtext for the app. Example: 'A Fun Game For Friends'",
165
233
  "maxLength": 30,
166
234
  "meta": {
167
235
  "storeInfo": "The subtitle will be reviewed before it is made available on the App Store."
168
236
  }
169
237
  },
170
238
  "description": {
171
- "meta": {
172
- "versioned": true,
173
- "liveEdits": true
174
- },
175
- "maxLength": 4000,
239
+ "type": "string",
176
240
  "description": "Main description of what the app does",
177
- "type": "string"
178
- },
179
- "promoText": {
241
+ "minLength": 10,
242
+ "maxLength": 4000,
180
243
  "meta": {
181
244
  "versioned": true,
182
- "liveEdits": true,
183
- "aso": false
184
- },
185
- "maxLength": 170,
186
- "description": "Short tagline for the app",
187
- "type": "string"
245
+ "liveEdits": true
246
+ }
188
247
  },
189
248
  "keywords": {
190
- "meta": {
191
- "versioned": true
192
- },
193
- "description": "List of keywords to help users find the app in the App Store",
194
249
  "type": "array",
250
+ "description": "List of keywords to help users find the app in the App Store",
195
251
  "uniqueItems": true,
196
252
  "items": {
197
253
  "maxLength": 100,
198
254
  "type": "string"
255
+ },
256
+ "meta": {
257
+ "versioned": true
199
258
  }
200
259
  },
201
- "privacyPolicyText": {
260
+ "releaseNotes": {
202
261
  "type": "string",
203
- "description": "Privacy policy for Apple TV"
204
- },
205
- "whatsNew": {
262
+ "description": "Changes since the last public version",
263
+ "maxLength": 4000,
206
264
  "meta": {
207
265
  "versioned": true,
208
266
  "liveEdits": true
209
- },
210
- "maxLength": 4000,
211
- "description": "Changes since the last public version",
212
- "type": "string"
267
+ }
268
+ },
269
+ "promoText": {
270
+ "type": "string",
271
+ "description": "Short tagline for the app",
272
+ "maxLength": 170,
273
+ "meta": {
274
+ "versioned": true,
275
+ "liveEdits": true,
276
+ "aso": false
277
+ }
213
278
  },
214
279
  "marketingUrl": {
280
+ "type": "string",
281
+ "description": "URL to the app marketing page",
282
+ "maxLength": 255,
215
283
  "meta": {
216
284
  "versioned": true,
217
285
  "liveEdits": true
218
- },
219
- "description": "URL to the app marketing page",
220
- "type": "string"
286
+ }
221
287
  },
222
288
  "supportUrl": {
289
+ "type": "string",
290
+ "description": "URL to the app support page",
291
+ "maxLength": 255,
223
292
  "meta": {
224
293
  "versioned": true,
225
294
  "liveEdits": true
226
- },
227
- "description": "URL to the app support page",
228
- "type": "string"
295
+ }
296
+ },
297
+ "privacyPolicyText": {
298
+ "type": "string",
299
+ "description": "Privacy policy for Apple TV"
229
300
  },
230
301
  "privacyPolicyUrl": {
302
+ "type": "string",
303
+ "description": "A URL that links to your privacy policy. A privacy policy is required for all apps.",
304
+ "maxLength": 255,
231
305
  "meta": {
232
306
  "versioned": true,
233
307
  "liveEdits": true
234
- },
235
- "maxLength": 255,
236
- "description": "A URL that links to your privacy policy. A privacy policy is required for all apps.",
237
- "type": "string"
308
+ }
238
309
  },
239
310
  "privacyChoicesUrl": {
311
+ "type": "string",
312
+ "description": "A URL where users can modify and delete the data collected from the app, or decide how their data is used and shared.",
313
+ "maxLength": 255,
240
314
  "meta": {
241
315
  "versioned": true,
242
316
  "liveEdits": true,
243
317
  "optional": true
244
- },
245
- "maxLength": 255,
246
- "description": "A URL where users can modify and delete the data collected from the app, or decide how their data is used and shared.",
247
- "type": "string"
318
+ }
248
319
  }
249
320
  }
250
321
  },
251
322
  "AppleAdvisory": {
252
323
  "type": "object",
253
324
  "additionalProperties": false,
325
+ "required": [
326
+ "alcoholTobaccoOrDrugUseOrReferences",
327
+ "contests",
328
+ "gamblingSimulated",
329
+ "horrorOrFearThemes",
330
+ "matureOrSuggestiveThemes",
331
+ "medicalOrTreatmentInformation",
332
+ "profanityOrCrudeHumor",
333
+ "sexualContentGraphicAndNudity",
334
+ "sexualContentOrNudity",
335
+ "violenceCartoonOrFantasy",
336
+ "violenceRealistic",
337
+ "violenceRealisticProlongedGraphicOrSadistic",
338
+ "gambling",
339
+ "unrestrictedWebAccess",
340
+ "kidsAgeBand",
341
+ "seventeenPlus"
342
+ ],
254
343
  "defaultSnippets": [
255
- {
256
- "label": "Minimum",
257
- "description": "The bare minimum rating, your app does nothing",
258
- "body": {
259
- "alcoholTobaccoOrDrugUseOrReferences": "NONE",
260
- "contests": "NONE",
261
- "gamblingSimulated": "NONE",
262
- "medicalOrTreatmentInformation": "NONE",
263
- "profanityOrCrudeHumor": "NONE",
264
- "sexualContentGraphicAndNudity": "NONE",
265
- "sexualContentOrNudity": "NONE",
266
- "horrorOrFearThemes": "NONE",
267
- "matureOrSuggestiveThemes": "NONE",
268
- "violenceCartoonOrFantasy": "NONE",
269
- "violenceRealisticProlongedGraphicOrSadistic": "NONE",
270
- "violenceRealistic": "NONE",
271
- "gamblingAndContests":false,
272
- "gambling": false,
273
- "kidsAgeBand": null,
274
- "seventeenPlus": false,
275
- "unrestrictedWebAccess": false
276
- }
277
- },
278
- {
279
- "label": "Interactive",
280
- "description": "Step through options",
281
- "body": {
282
- "alcoholTobaccoOrDrugUseOrReferences": "${1|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
283
- "contests": "${2|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
284
- "gamblingSimulated": "${3|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
285
- "medicalOrTreatmentInformation": "${4|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
286
- "profanityOrCrudeHumor": "${5|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
287
- "sexualContentGraphicAndNudity": "${6|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
288
- "sexualContentOrNudity": "${7|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
289
- "horrorOrFearThemes": "${8|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
290
- "matureOrSuggestiveThemes": "${9|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
291
- "violenceCartoonOrFantasy": "${10|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
292
- "violenceRealisticProlongedGraphicOrSadistic": "${11|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
293
- "violenceRealistic": "${12|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
294
- "gamblingAndContests":false,
295
- "gambling": false,
296
- "kidsAgeBand": null,
297
- "seventeenPlus": false,
298
- "unrestrictedWebAccess": false
299
- }
344
+ {
345
+ "label": "Basic",
346
+ "description": "Create an advisory that disables all age-rated properties, for when your app does nothing",
347
+ "body": {
348
+ "alcoholTobaccoOrDrugUseOrReferences": "NONE",
349
+ "contests": "NONE",
350
+ "gamblingSimulated": "NONE",
351
+ "horrorOrFearThemes": "NONE",
352
+ "matureOrSuggestiveThemes": "NONE",
353
+ "medicalOrTreatmentInformation": "NONE",
354
+ "profanityOrCrudeHumor": "NONE",
355
+ "sexualContentGraphicAndNudity": "NONE",
356
+ "sexualContentOrNudity": "NONE",
357
+ "violenceCartoonOrFantasy": "NONE",
358
+ "violenceRealistic": "NONE",
359
+ "violenceRealisticProlongedGraphicOrSadistic": "NONE",
360
+ "gambling": false,
361
+ "unrestrictedWebAccess": false,
362
+ "kidsAgeBand": null,
363
+ "seventeenPlus": false
300
364
  }
301
- ],
365
+ },
366
+ {
367
+ "label": "Full",
368
+ "description": "Create an advisory that enables some of the age-rated properties",
369
+ "body": {
370
+ "alcoholTobaccoOrDrugUseOrReferences": "${1|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
371
+ "contests": "${2|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
372
+ "gamblingSimulated": "${3|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
373
+ "horrorOrFearThemes": "${4|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
374
+ "matureOrSuggestiveThemes": "${5|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
375
+ "medicalOrTreatmentInformation": "${6|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
376
+ "profanityOrCrudeHumor": "${7|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
377
+ "sexualContentGraphicAndNudity": "${8|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
378
+ "sexualContentOrNudity": "${9|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
379
+ "violenceCartoonOrFantasy": "${10|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
380
+ "violenceRealistic": "${11|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
381
+ "violenceRealisticProlongedGraphicOrSadistic": "${12|NONE,INFREQUENT_OR_MILD,FREQUENT_OR_INTENSE|}",
382
+ "unrestrictedWebAccess": false,
383
+ "gambling": false,
384
+ "kidsAgeBand": null,
385
+ "seventeenPlus": false
386
+ }
387
+ }
388
+ ],
302
389
  "properties": {
303
390
  "alcoholTobaccoOrDrugUseOrReferences": {
304
- "$ref": "#/definitions/apple/AppleRating"
391
+ "$ref": "#/definitions/apple/AppleRating",
392
+ "description": "Does the app contain alcohol, tobacco, or drug use or references?"
305
393
  },
306
394
  "contests": {
307
- "$ref": "#/definitions/apple/AppleRating"
308
- },
309
- "gamblingAndContests": {
310
- "type": "boolean"
311
- },
312
- "gambling": {
313
- "type": "boolean"
395
+ "$ref": "#/definitions/apple/AppleRating",
396
+ "description": "Does the app contain contests?"
314
397
  },
315
398
  "gamblingSimulated": {
316
- "$ref": "#/definitions/apple/AppleRating"
317
- },
318
- "kidsAgeBand": {
319
- "anyOf": [
320
- {
321
- "$ref": "#/definitions/apple/AppleKidsAge"
322
- },
323
- {
324
- "type": "null"
325
- }
326
- ]
399
+ "$ref": "#/definitions/apple/AppleRating",
400
+ "description": "Does the app contain simulated gambling?"
327
401
  },
328
402
  "medicalOrTreatmentInformation": {
329
- "$ref": "#/definitions/apple/AppleRating"
403
+ "$ref": "#/definitions/apple/AppleRating",
404
+ "description": "Does the app contain medical or treatment information?"
330
405
  },
331
406
  "profanityOrCrudeHumor": {
332
- "$ref": "#/definitions/apple/AppleRating"
407
+ "$ref": "#/definitions/apple/AppleRating",
408
+ "description": "Does the app contain profanity or crude humor?"
333
409
  },
334
410
  "sexualContentGraphicAndNudity": {
335
- "$ref": "#/definitions/apple/AppleRating"
411
+ "$ref": "#/definitions/apple/AppleRating",
412
+ "description": "Does the app contain graphic sexual content and nudity?"
336
413
  },
337
414
  "sexualContentOrNudity": {
338
- "$ref": "#/definitions/apple/AppleRating"
339
- },
340
- "seventeenPlus": {
341
- "type": "boolean"
415
+ "$ref": "#/definitions/apple/AppleRating",
416
+ "description": "Does the app contain sexual content or nudity?"
342
417
  },
343
418
  "horrorOrFearThemes": {
344
- "$ref": "#/definitions/apple/AppleRating"
419
+ "$ref": "#/definitions/apple/AppleRating",
420
+ "description": "Does the app contain horror or fear themes?"
345
421
  },
346
422
  "matureOrSuggestiveThemes": {
347
- "$ref": "#/definitions/apple/AppleRating"
348
- },
349
- "unrestrictedWebAccess": {
350
- "type": "boolean"
423
+ "$ref": "#/definitions/apple/AppleRating",
424
+ "description": "Does the app contain mature or suggestive themes?"
351
425
  },
352
426
  "violenceCartoonOrFantasy": {
353
- "$ref": "#/definitions/apple/AppleRating"
427
+ "$ref": "#/definitions/apple/AppleRating",
428
+ "description": "Does the app contain cartoon or fantasy violence?"
354
429
  },
355
430
  "violenceRealisticProlongedGraphicOrSadistic": {
356
- "$ref": "#/definitions/apple/AppleRating"
431
+ "$ref": "#/definitions/apple/AppleRating",
432
+ "description": "Does the app contain prolonged graphic or sadistic realistic violence?"
357
433
  },
358
434
  "violenceRealistic": {
359
- "$ref": "#/definitions/apple/AppleRating"
435
+ "$ref": "#/definitions/apple/AppleRating",
436
+ "description": "Does the app contain realistic violence?"
437
+ },
438
+ "unrestrictedWebAccess": {
439
+ "type": "boolean",
440
+ "description": "Does your app contain unrestricted web access, such as with an embedded browser?"
441
+ },
442
+ "gambling": {
443
+ "type": "boolean",
444
+ "description": "Does your app contain gambling?"
445
+ },
446
+ "kidsAgeBand": {
447
+ "oneOf": [
448
+ {
449
+ "type": "null"
450
+ },
451
+ {
452
+ "$ref": "#/definitions/apple/AppleKidsAge"
453
+ }
454
+ ],
455
+ "description": "When parents visit the Kids category on the App Store, they expect the apps they find will protect their children’s data, provide only age-appropriate content, and require a parental gate in order to link out of the app, request permissions, or present purchasing opportunities. It’s critical that no personally identifiable information or device information be transmitted to third parties, and that advertisements are human-reviewed for age appropriateness in order to be displayed.\n@see https://developer.apple.com/news/?id=091202019a",
456
+ "markdownDescription": "When parents visit the Kids category on the App Store, they expect the apps they find will protect their children’s data, provide only age-appropriate content, and require a parental gate in order to link out of the app, request permissions, or present purchasing opportunities. It’s critical that no personally identifiable information or device information be transmitted to third parties, and that advertisements are human-reviewed for age appropriateness in order to be displayed.\n\n[Learn more](https://developer.apple.com/news/?id=091202019a)"
457
+ },
458
+ "seventeenPlus": {
459
+ "type": "boolean",
460
+ "description": "If your app rates 12+ or lower, and you believe its content may not be suitable for children under 17, you can manually set the age rating to 17+.\n@see https://help.apple.com/app-store-connect/#/dev599d50efb",
461
+ "markdownDescription": "If your app rates 12+ or lower, and you believe its content may not be suitable for children under 17, you can manually set the age rating to 17+.\n\n[Learn more](https://help.apple.com/app-store-connect/#/dev599d50efb)"
360
462
  }
361
463
  }
362
464
  },
@@ -402,8 +504,8 @@
402
504
  }
403
505
  },
404
506
  "shouldResetRatings": {
405
- "description": "Should App Store ratings be reset for this version of the app.",
406
507
  "type": "boolean",
508
+ "description": "Should App Store ratings be reset for this version of the app.",
407
509
  "meta": {
408
510
  "storeInfo": "You can reset your app’s summary rating for all countries or regions when you release this version. Keep in mind that once this version is released, you won’t be able to restore the rating. Your app’s existing customer reviews will still appear on the App Store."
409
511
  }
@@ -412,144 +514,107 @@
412
514
  "type": "boolean"
413
515
  },
414
516
  "automaticRelease": {
415
- "description": "Should the app automatically be released when approved by App Store review.",
416
- "type": "boolean"
517
+ "type": "boolean",
518
+ "description": "Should the app automatically be released when approved by App Store review."
417
519
  },
418
520
  "usesNonExemptEncryption": {
419
- "description": "Alternative to setting `ITSAppUsesNonExemptEncryption` in the binary's `Info.plist`.",
420
- "type": "boolean"
521
+ "type": "boolean",
522
+ "description": "Alternative to setting `ITSAppUsesNonExemptEncryption` in the binary's `Info.plist`."
421
523
  }
422
524
  }
423
525
  },
424
526
  "AppleReview": {
425
527
  "type": "object",
426
528
  "description": "Info provided to the App Store review team to help them understand how to use your app.",
427
- "required": ["firstName", "lastName"],
529
+ "required": [
530
+ "firstName",
531
+ "lastName",
532
+ "email",
533
+ "phone"
534
+ ],
428
535
  "defaultSnippets": [
429
536
  {
537
+ "label": "Basic",
538
+ "description": "Only define the contact details in case communcation is needed with the App Store review team.",
430
539
  "body": {
431
540
  "firstName": "$1",
432
- "lastName": "$2"
541
+ "lastName": "$2",
542
+ "email": "$3",
543
+ "phone": "+$4"
544
+ }
545
+ },
546
+ {
547
+ "label": "Full",
548
+ "description": "Define the demo account credentials, additional info, and contact details for the App Store review team.",
549
+ "body": {
550
+ "firstName": "$1",
551
+ "lastName": "$2",
552
+ "email": "$3",
553
+ "phone": "+$4",
554
+ "demoUsername": "$5",
555
+ "demoPassword": "$6",
556
+ "demoRequired": true,
557
+ "notes": "$7"
433
558
  }
434
559
  }
435
560
  ],
436
561
  "properties": {
437
- "demoUsername": {
438
- "description": "Optional username for testing the app.",
439
- "type": "string"
440
- },
441
- "demoPassword": {
442
- "description": "Optional password for testing the app.",
443
- "type": "string"
444
- },
445
- "attachment": {
446
- "description": "Local file path to upload to the review team.",
447
- "type": "string"
448
- },
449
562
  "firstName": {
450
- "description": "Developer first name for the reviewer to contact.",
451
- "type": "string"
563
+ "type": "string",
564
+ "description": "First name of contact in case communication is needed with the App Store review team.",
565
+ "minLength": 1
452
566
  },
453
567
  "lastName": {
454
- "description": "Developer last name (surname) for the reviewer to contact.",
455
- "type": "string"
456
- },
457
- "phone": {
458
- "description": "Developer phone number for the reviewer to contact.",
459
- "type": "string"
568
+ "type": "string",
569
+ "description": "Last name of contact in case communication is needed with the App Store review team.",
570
+ "minLength": 1
460
571
  },
461
572
  "email": {
462
- "description": "Developer email address for the reviewer to contact.",
463
573
  "type": "string",
574
+ "description": "Email address of contact in case communication is needed with the App Store review team.",
464
575
  "format": "email"
465
576
  },
577
+ "phone": {
578
+ "type": "string",
579
+ "description": "Phone number of contact in case communication is needed with the App Store review team. Preface the phone number with ‘+’ followed by the country code (for example, +44 844 209 0611)"
580
+ },
581
+ "demoUsername": {
582
+ "type": "string",
583
+ "description": "The user name to sign in to your app to review its features."
584
+ },
585
+ "demoPassword": {
586
+ "type": "string",
587
+ "description": "The password to sign in to your app to review its features."
588
+ },
589
+ "demoRequired": {
590
+ "type": "boolean",
591
+ "description": "A Boolean value that indicates if sign-in information is required to review all the features of your app. If users sign in using social media, provide information for an account for review. Credentials must be valid and active for duration of review.",
592
+ "markdownDescription": "A Boolean value that indicates if sign-in information is required to review all the features of your app. If users sign in using social media, provide information for an account for review.\n\n**Credentials must be valid and active for duration of review.**"
593
+ },
466
594
  "notes": {
467
- "description": "Any additional notes for the App Store reviewer.",
468
- "type": "string"
595
+ "type": "string",
596
+ "description": "Additional information about your app that can help during the review process. Do not include demo account details.",
597
+ "markdownDescription": "Additional information about your app that can help during the review process.\n\n**Do not include demo account details.**",
598
+ "minLength": 2,
599
+ "maxLength": 4000
469
600
  }
470
601
  }
471
602
  }
472
603
  },
473
604
  "AppleConfig": {
474
- "description": "Configuration that is specific to the Apple App Store.",
475
605
  "type": "object",
606
+ "description": "Configuration that is specific to the Apple App Store.",
476
607
  "additionalProperties": false,
477
608
  "properties": {
478
609
  "advisory": {
479
610
  "$ref": "#/definitions/apple/AppleAdvisory"
480
611
  },
481
612
  "categories": {
482
- "type": "array",
483
- "maxItems": 2,
484
- "description": "App Store categories for the app. Can add up to two categories. STICKERS and GAMES categories can add an additional subcategory.",
485
- "items": {
486
- "anyOf": [
487
- {
488
- "$ref": "#/definitions/apple/AppleCategory"
489
- },
490
- {
491
- "type": "array",
492
- "maxItems": 2,
493
- "items": [
494
- {
495
- "enum": ["GAMES"]
496
- },
497
- {
498
- "enum": [
499
- "GAMES_SPORTS",
500
- "GAMES_WORD",
501
- "GAMES_MUSIC",
502
- "GAMES_ADVENTURE",
503
- "GAMES_ACTION",
504
- "GAMES_ROLE_PLAYING",
505
- "GAMES_CASUAL",
506
- "GAMES_BOARD",
507
- "GAMES_TRIVIA",
508
- "GAMES_CARD",
509
- "GAMES_PUZZLE",
510
- "GAMES_CASINO",
511
- "GAMES_STRATEGY",
512
- "GAMES_SIMULATION",
513
- "GAMES_RACING",
514
- "GAMES_FAMILY"
515
- ]
516
- }
517
- ],
518
- "additionalItems": false
519
- },
520
- {
521
- "type": "array",
522
- "maxItems": 2,
523
- "items": [
524
- {
525
- "enum": ["STICKERS"]
526
- },
527
- {
528
- "enum": [
529
- "STICKERS_PLACES_AND_OBJECTS",
530
- "STICKERS_EMOJI_AND_EXPRESSIONS",
531
- "STICKERS_CELEBRATIONS",
532
- "STICKERS_CELEBRITIES",
533
- "STICKERS_MOVIES_AND_TV",
534
- "STICKERS_SPORTS_AND_ACTIVITIES",
535
- "STICKERS_EATING_AND_DRINKING",
536
- "STICKERS_CHARACTERS",
537
- "STICKERS_ANIMALS",
538
- "STICKERS_FASHION",
539
- "STICKERS_ART",
540
- "STICKERS_GAMING",
541
- "STICKERS_KIDS_AND_FAMILY",
542
- "STICKERS_PEOPLE",
543
- "STICKERS_MUSIC"
544
- ]
545
- }
546
- ],
547
- "additionalItems": false
548
- }
549
- ]
550
- }
613
+ "$ref": "#/definitions/apple/AppleCategory"
551
614
  },
552
615
  "copyright": {
616
+ "type": "string",
617
+ "description": "The updated company copyright. Example: 2021 Evan Bacon",
553
618
  "defaultSnippets": [
554
619
  {
555
620
  "body": "$CURRENT_YEAR ${1:name}"
@@ -559,12 +624,7 @@
559
624
  "versioned": true,
560
625
  "liveEdits": true,
561
626
  "storeInfo": "The name of the person or entity that owns the exclusive rights to your app, preceded by the year the rights were obtained (for example, \"2008 Acme Inc.\"). Do not provide a URL."
562
- },
563
- "description": "The updated company copyright. Example: 2021 Evan Bacon",
564
- "type": "string"
565
- },
566
- "idfa": {
567
- "$ref": "#/definitions/apple/AppleIdfa"
627
+ }
568
628
  },
569
629
  "info": {
570
630
  "description": "Localized core app info",
@@ -901,28 +961,28 @@
901
961
  ]
902
962
  },
903
963
  "release": {
904
- "description": "Release strategy",
905
- "$ref": "#/definitions/apple/AppleRelease"
964
+ "$ref": "#/definitions/apple/AppleRelease",
965
+ "description": "Release strategy"
906
966
  },
907
967
  "review": {
908
- "description": "Info for the App Store reviewer",
909
- "$ref": "#/definitions/apple/AppleReview"
910
- },
911
- "priceTier": {
912
- "description": "App price tier. 0 is Free.",
913
- "type": "number"
968
+ "$ref": "#/definitions/apple/AppleReview",
969
+ "description": "Info for the App Store reviewer"
914
970
  }
915
971
  }
916
972
  }
917
973
  },
918
974
  "properties": {
919
975
  "configVersion": {
920
- "const": 0
976
+ "const": 0,
977
+ "description": "The EAS metadata store configuration version"
921
978
  },
922
979
  "apple": {
923
980
  "$ref": "#/definitions/AppleConfig"
924
981
  }
925
982
  },
926
983
  "additionalProperties": false,
927
- "required": ["configVersion", "apple"]
984
+ "required": [
985
+ "configVersion",
986
+ "apple"
987
+ ]
928
988
  }